【问题标题】:Parsing: Why a rule I defined isn't matched?解析:为什么我定义的规则不匹配?
【发布时间】:2012-08-04 14:12:31
【问题描述】:

我正在用 Python 编写一个带有 PLY 的反编译器,旨在将 myryl 翻译成 neko。

问题是在解析代码时:

fun not 1 => 0;
    not 0 => 1;
end;

此示例位于:https://github.com/narke/my2neko/blob/master/test_cases/ex1.my

解析器不匹配适用于保留字'fun'的规则,用FUN_T表示,当然规则存在,最后一条:

def p_declaration(p):
'''declaration : MY_T vb
    | dot_exp ARROW pattern
    | FIELD_T MY_T fields
    | RECURSIVE_T MY_T rvb
    | FUN_T fun_decls

解析器位于:https://github.com/narke/my2neko/blob/master/my2neko.py

我得到的错误是这样的:

State  : 0
Illegal character 'f'
Illegal character 'u'
Illegal character 'n'
Illegal character 'i'
Illegal character 'n'
Stack  : . LexToken(LOWERCASE_ID,'c',1,6)
Action : Shift and goto state 80

重现它:./my2neko.py test_cases/ex4.my f.neko

你能指出我错过了什么吗? 提前致谢。

这里是项目:https://github.com/narke/my2neko

【问题讨论】:

    标签: python parsing parser-generator ply


    【解决方案1】:

    好的,我发现了问题所在。 我省略了处理保留字。 请参阅http://www.dabeaz.com/ply/ply.html 的 4.3 令牌规范。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多