【发布时间】:2016-03-23 21:53:35
【问题描述】:
在我目前的编译器课程中,我已经了解了如何找到第一组和后一组语法,并且到目前为止我处理的所有语法都包含 epsilon。现在我被要求找到第一个并遵循没有 epsilon 的语法集,并确定它是 LR(0) 还是 SLR。没有 epsilon 让我失望了,所以我不知道我是否做得正确。我将不胜感激任何关于我是否在第一组和后续组的正确轨道上,以及如何开始确定它是否是 LR(0)
考虑以下描述 Lisp 算术的语法:
S -> E // S是开始符号,E是表达式
E -> (FL) // F 是数学函数,L 是一个列表
L -> 李 | I // I 是列表中的一个项目
我 -> n | E // 一个项目是一个数字 n 或一个表达式 E
F -> + | - | *
第一:
FIRST(S)= FIRST(E) = {(}
FIRST(L)= FIRST(I) = {n,(}
FIRST(F) = {+, -, *}
关注:
关注(S) = {$}
跟随(E) = 跟随(L) = {), n, $}
FOLLOW(I) = {),$}
FOLLOW(F) = {),$}
【问题讨论】:
标签: parsing compiler-construction