TransCSI 板


LINE

※ 引述《bnm51315 (La-La)》之铭言: : 最近看书看到"程式语言"这章 : 其中有提到代数运算式语法图和语法图所建的字串剖析树 ^^^^^^^^^^ ^^^^^^^^^^ expression(expr.) parse tree : 但是看了半天 : 书上没有解释剖析树要怎麽转换、怎麽看 : 所以想请问各位 : 这种东西要怎麽去做转换以及怎麽去解析... 先说,我对这个也不是很了解,有讲错的地方麻烦板上高手更正。 简单来说, 就是像在实做编译器等需要「解析语法」的地方, 他内部会有一个判别的语法(grammar), 若是可以依据这个 grammar 的推展来得到最後的 expr., 就可判断此 expr. 为合乎语法 e.g. a + b * c - d / e 合乎语法 a + b c - d 不合乎语法 举一个简单的 grammar 可能长这样: <expr> -> <expr> + <term> | <expr> - <term> | <term> (1.1 - 1.3) <term> -> <term> * <fact> | <term> / <fact> | <fact> (2.1 - 2.3) <fact> -> <nums> | (<expr>) (3.1, 3.2) <nums> -> 0 | 1 | 2 | ... | 8 | 9 (4.1 - 4.10) 每一个用 < > 括起来的都是 variable(non-terminal),意思就是还可以再转换 最後的 0, 1, ... , 9, +, -, *, / 是 terminal 上面每一条 grammar 代表 [左边的 valuable] 可以转换成 [右边的表示式] 而 | 就是 「或」 的意思,表示从中选一个, 因此我把上面每一种转换的可能都编上号码(1.1 - 4.10),方便说明 假设现在我要判断 5 * (6 - 1) 是不是一个 expr. 那麽可以试着推推看: <expr> = <term> 1.3 = <term> * <fact> 2.1 = <fact> * <fact> 2.3 = <nums> * <fact> 3.1 = 5 * <fact> 4.6 = 5 * (<expr>) 3.2 = 5 * (<expr> - <term>) 1.2 = 5 * (<term> - <term>) 1.3 = 5 * (<fact> - <term>) 2.3 = 5 * (<nums> - <term>) 3.1 = 5 * ( 6 - <term>) 4.7 = 5 * ( 6 - <fact>) 2.3 = 5 * ( 6 - <nums>) 3.1 = 5 * ( 6 - 1 ) 4.2 至於 paser tree 就是上面用式子推导的过程,改用 tree 的型态来表示,换汤不换药 <expr> | <term> 1.3 / | \ <term> * <fact> 2.1 | | | <fact> * <fact> 2.3 | | | <nums> * <fact> 3.1 | | \ 5 * <fact> 4.6 | | \ 5 * (<expr>) 3.2 | | / | \ 5 * (<expr> - <term>) 1.2 | | | | | 5 * (<term> - <term>) 1.3 | | | | | 5 * (<fact> - <term>) 2.3 | | | | | 5 * (<nums> - <term>) 3.1 | | | | | 5 * ( 6 - <term>) 4.7 | | | | | 5 * ( 6 - <fact>) 2.3 | | | | | 5 * ( 6 - <nums>) 3.1 | | | | | 5 * ( 6 - 1 ) 4.2 因此,不管从式子推导,或是 parse tree, 我们都可知 5 * (6 - 1) 合乎我们上面所给定那个 grammar 然而你可以发现像是 2(4 * 7 / 3) 这样是推导不出来的, 它并不属於我所给的这个 grammar 所定义的语言(language) (但是仍有可能有另外一个 grammar 能够解析它) -- 我印象中去年不管考试还是写考古题, 好像都没碰过这种问题啊。 建议有个大致的认识就好,不用太钻研 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.2.239 ※ 编辑: rainphiz 来自: 220.133.2.239 (03/31 14:00)
1F:推 bnm51315:感谢这位大大...虽然还是一知半解 XDD 03/31 18:44
2F:→ bnm51315:不过 先大致上认识就好 等有空时再钻研 = =+ 03/31 18:44
3F:推 zptdaniel:为看先推!@@ 03/31 18:53
4F:推 RJking:原来是说这个东西...这题目最常考方式就是判断後序运算成 03/31 23:43
5F:→ RJking:立不成立 03/31 23:43
6F:→ RJking:也没有一定要後序...反正前後序运算式很好考这个概念 03/31 23:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP