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)*)+