如何从 grako/TatSu 获取简明的语法错误信息

How to get concise syntax error messages from grako/TatSu

如果 grako/tatsu 生成的解析器的输入有语法错误,例如 calc.py 示例的 3 + / 3,则会得到一长串 Python 调用除了相关的序列 3 + / 3 ^ 我可以使用 try - except 结构,但随后我也丢失了错误消息的相关部分。

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

这应该与任何 Python 程序中的相同。如果让异常转义 main(),则会打印堆栈跟踪。相反,您可以这样写:

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