我正在尝试学习编译器构造,我刚刚通读了关于 SLR 解析器的 Dragon Book 章节。因此,我决定制作一个简单的语法并尝试手动编写解析器代码。语法如下所示:
S -> A
A -> (A)A
A -> e,
哪里e
是空字符串产生。
根据 StackOverflow 上的另一个问题,处于起始状态的项目应如下所示
S -> .A
A -> .(A)A
A -> .e,
但是 GOTO 函数会是什么样子。我知道这一点GOTO( '(' ) = *some state with A -> (.A)A*
,但我无法真正理解GOTO(e)
。解析器看到一个空字符串并没有什么意义。可以?
谢谢大家!
迈克尔