[英]How to left factor a context-free grammar?
據我了解,在以下情況下,需要左因子分解來構建自上而下的解析器。 但是很難理解該怎么做? 有人可以幫我嗎? 謝謝。
s = a | b
b = c d
c = (e | f) g
e = a | h
每個非終結符在這里僅被引用一次,因此我們可以在單個表達式中將整個語法組合在一起:
s = a | ((a | h | f) g d)
因此,我們有兩個基本變化,終端a可選地后面跟着g然后是d,或者h或f中的一個總是跟着g然后是d。
所以我們有
s = b' | c'
b' = a | a g d
c' = (h | f) g d
或者,將通用的gd序列放入自己的產品中
s = b' | c'
b' = a | a e'
c' = (h | f) e'
e' = g d
然后,我們可以通過引入E(空)選項將b作為上一個常見的起始符號拉起:
s = b'' | c'
b'' = a (e' | E)
c' = (h | f) e'
e' = g d
語法現在是明確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.