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燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP