簡體   English   中英

如何不考慮上下文無關語法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM