Error handling 如何从grako/TatSu获取简明语法错误消息

Error handling 如何从grako/TatSu获取简明语法错误消息,error-handling,exception-handling,grako,tatsu,Error Handling,Exception Handling,Grako,Tatsu,如果grako/tatsu生成的解析器的输入有语法错误,例如calc.py示例的3+/3,那么除了相关的 3 + / 3 ^ 我可以使用try-except结构,但是我也会丢失错误消息的相关部分 我想使用grako/tatsu解析规则编译器的语法规则,我很欣赏以干净的方式分离语法和语义的可能性。用户会对过多的错误消息感到非常恼火。有没有清除错误消息的方法?这应该与任何Python程序中的方法相同。如果让异常转义main,则将打印堆栈跟踪。相反,你可以写: try: do_parse() e

如果grako/tatsu生成的解析器的输入有语法错误,例如calc.py示例的3+/3,那么除了相关的 3 + / 3 ^ 我可以使用try-except结构,但是我也会丢失错误消息的相关部分


我想使用grako/tatsu解析规则编译器的语法规则,我很欣赏以干净的方式分离语法和语义的可能性。用户会对过多的错误消息感到非常恼火。有没有清除错误消息的方法?

这应该与任何Python程序中的方法相同。如果让异常转义main,则将打印堆栈跟踪。相反,你可以写:

try:
   do_parse()
except Exception as e:
  print(str(e))

谢谢你的回答。现在我认为我可以处理用户在编写规则时所犯的语法错误。stre给了我足够的信息,我想我可以从这个字符串中选择重要的信息。我在报告语义规则中检测到的错误时仍然存在问题。我在calc.py中使用了样式解析的解析因子。@koskenni您还可以使用exception对象,它的属性中存储了一些有趣的信息。有关定义,请参见tatsu.exceptions。