error-handling - 如何从grako/TatSu获取简洁的语法错误消息

标签 error-handling exception-handling 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))

关于error-handling - 如何从grako/TatSu获取简洁的语法错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49005605/

相关文章:

c# - .NET - 使用多个 SqlParameters 将异常记录到数据库并指定每个数据库列中的内容

.net - ThreadAbortException内部实现

python - 是否可以在没有 grako 的情况下使用 grako 生成的解析器?

node.js - 处理NodeJS错误事件?

java - 我可以不这样做吗?收到 'exception' 错误

mysql - NodeJs : how to resolve Error: connect ETIMEDOUT xx. xx.xx:xxxx

.net - 套接字异常 : No such host is known

parsing - 如果我的语法包含由许多或连接的子表达式组成的表达式,为什么 Grako 解析过程会失败?

python - 如何用 EBNF 表达这种格式?

python - 我该如何修复分配前引用的第6行的封闭范围中定义的 'local variable ' prev_time'错误