python中的eof错误_python – 解析器YACC中的EOF错误

我试图使用PLY库中为Python提供的yacc解析器来解析字符串.

解析器本身很长,但我遇到的问题是它总是给我同样的错误,无论我放什么样的字符串.

错误是这样的:

yacc:输入中的解析错误. EOF

而词法分析器运行完美,所以我认为解析器就是问题所在.但我不明白这个错误,所以我甚至不知道在哪里首先解决这个问题

有任何想法吗?

非常感谢你!

解决方法:

PLY中指定的所有解析器都应该具有单个顶级规则,该规则会因解析整个输入文本而减少.例如,如果解析程序,顶级规则可能是这样的:

def p_program(p):

'''

program : declarations

'''

def p_declarations(p):

'''

declarations : declarations declaration

| declaration

'''

...

如果在解析器中出现“EOF”错误,则表示它在不降低顶级语法规则的情况下到达输入的末尾.也就是说,解析堆栈是非空的,并且没有更多可以减少的规则.由于堆栈非空,解析器将尝试移位更多符号并因EOF而失败.

导致此错误的一个可能原因是您的语法中有一个未正确指定的起始规则.确保文件中的第一个p_rule(p)函数是启动规则.

标签:python,parsing,yacc,ply

来源: https://codeday.me/bug/20190621/1252302.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值