s : cmd
| cmd SOMETHING
cmd :WORD
WORD和什麼事都是非空終端 這是一個LR1語法所以野牛應該沒有問題解析它。 但我面臨的運行時一個意想不到的問題:輸入 程序會提示兩次,因此,例如,當我進入「QWERTY」它提示的第二輸入,當我嘗試調試它,我得到這個: Starting parse
Entering state 0
Reading a t
我目前正在從下面的語法構造LR(1)狀態。 S->AS
S->c
A->aA
A->b
where A,S are nonterminals and a,b,c are terminals.
這是I0 I0: S' -> .S, epsilon
---------------
S -> .AS, epsilon
S -> .c, epsilon
對於給定上下文無關語法: S -> G $
G -> PG | P
P -> id : R
R -> id R | epsilon
如何重寫語法,使其LR(1)? 當解析輸入「id:.id」時,當前語法會改變/減少衝突,其中「。」是解析器的輸入指針。 該語法生成滿足正則表達式的語言(id:(id)*)+