LL(1) 语法:
(1) Var -> ID DimList
(2) DimList -> ε DimList'
(3) DimList' -> Dim DimList'
(4) DimList' -> ε
(5) Dim -> [ CONST ]
而且,在我正在阅读的脚本中,它说该函数FIRST(ε DimList')
给出了{#, [}
. 但是,怎么做?
我的猜测是,由于 (2) 的右侧以 开头ε
,它会跳过 epsilon 并取FIRST(DimList')
is,考虑到 (3) 和 (5),等于{[}
,但由于 (4),它也取FOLLOW(DimList')
is {#}
。
其他方式可能是,因为 (2) 以它开始,ε
它跳过 epsilon 并从 (2) 中获取FIRST(DimList')
但也从 (2) 获取 FOLLOW(DimList) ...
第一个对我来说更有意义,尽管我仍在学习 LL(1) 语法的基础知识,所以如果有人花时间说明这一点,我将不胜感激,谢谢。
编辑:当然,这些都可能不是真的。