假如现在要 解析这条表达式 如何最终得到 规约成 Exp呢?
有以下文法
Exp:( Exp Op Exp )
Exp : Exp Op Exp
EXp : EXP OP ID|NUM
EXp : ID|NUM OP Exp
这是输入的字符串
i+(-i *(i /-(1+i )* i ) -3)
开始解析 ,符号压栈,直到 匹配到了 第一个 右括号, 然后或许根本没有右括号。
那么检测到 字符尾,再 进行规约操作。
i+ (
ID OP (
无可用规约,继续展开括号。
直到 找到 第一对 括号的出现。
ID OP ( ID OP ( ID OP ( ID OP ID)
规约 Exp
i+(-i *(i /-(1+i )* i ) -3)
ID OP ( ID OP ( ID OP Exp OP ID )
规约:
ID OP Exp OP ID => EXP OP ID=> EXP
ID OP ( ID OP EXP OP ID )
规约:
ID OP EXP OP ID => EXP OP ID => EXP
ID OP ( EXP )
规约:
ID OP EXP => EXP ; 剩余1个EXP 规约成功..
我的结论还是 ,递归 展开所有括号,直到,没法展开,就开始 规约成 EXP , 消除括号以及 Exp中的符号。
最终 消除所有符号,剩下一个 Exp。
那就证明语法通过