【问题标题】:Explain Parsing Table at http://hackingoff.com/compilers/ll-1-parser-generator在 http://hackingoff.com/compilers/ll-1-parser-generator 解释解析表
【发布时间】:2015-02-04 15:44:24
【问题描述】:

我在http://hackingoff.com/compilers/ll-1-parser-generator 使用以下语法:

E ->  T E'
E' ->  + T E' 
E' -> EPSILON
T ->  F T'
T' -> * F T'
T' -> EPSILON 
F -> ( E ) 
F ->  id

输出解析表是

[
        [0, "+", "*", "(", ")", "id", "$"],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 10, 10, 1, 9, 1, 9],
        [0, 2, 10, 10, 3, 10, 3],
        [0, 9, 10, 4, 9, 4, 9],
        [0, 6, 5, 10, 6, 10, 6],
        [0, 9, 9, 7, 9, 8, 9]
]

有人能解释一下解析表吗?特别是910是什么意思,因为生产规则只有8行

【问题讨论】:

    标签: parsing context-free-grammar ll


    【解决方案1】:

    页面本身已说明,就在表格上方:

    如果非终端的预测集中没有终端,则会在表中放置一个错误代码。如果该终端在后面(该非终端),则该错误是 POP 错误。否则,这是一个 SCAN 错误。

    POP 错误代码 = 预测表生成数 + 1

    SCAN 错误代码 = 预测表生成数 + 2

    因此,对于具有八个产生式规则的文法,值 9 和 10 分别为 POP errorSCAN error

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多