【发布时间】:2013-08-12 17:47:34
【问题描述】:
LL(1) 语法:
(1) Var -> ID DimList
(2) DimList -> ε DimList'
(3) DimList' -> Dim DimList'
(4) DimList' -> ε
(5) Dim -> [ CONST ]
而且,在我正在阅读的脚本中,它说函数FIRST(ε DimList') 给出了{#, [}。但是,怎么做?
我的猜测是,由于 (2) 的右侧以 ε 开头,因此它会跳过 epsilon 并采用 FIRST(DimList'),即考虑到 (3) 和 (5),等于 {[},但是,由于 (4),采用 FOLLOW(DimList') 即 {#}。
其他方式可能是,由于 (2) 以 ε 开头,它跳过 epsilon 并采用 FIRST(DimList') 但也从 (2) 中采用 FOLLOW(DimList)...
第一个对我来说更有意义,虽然我仍在学习 LL(1) 语法的基础知识,所以如果有人花时间说明这一点,我将不胜感激,谢谢。
编辑:当然,这些都可能不是真的。
【问题讨论】:
标签: parsing programming-languages grammar context-free-grammar ll