小智 7
PLY中指定的所有解析器都应该具有单个顶级规则,该规则会因解析整个输入文本而减少.例如,如果解析程序,顶级规则可能是这样的:
def p_program(p):
'''
program : declarations
'''
def p_declarations(p):
'''
declarations : declarations declaration
| declaration
'''
...
Run Code Online (Sandbox Code Playgroud)
如果在解析器中出现"EOF"错误,则表示它在不降低顶级语法规则的情况下到达输入的末尾.也就是说,解析堆栈是非空的,并且没有更多可以减少的规则.由于堆栈非空,解析器将尝试移位更多符号并因EOF而失败.
导致此错误的一个可能原因是您的语法中有一个未正确指定的起始规则.确保文件中的第一个p_rule(p)函数是启动规则.
归档时间: |
|
查看次数: |
1691 次 |
最近记录: |