我正在尝试理解由menhir生成的.messages文件。
在这个样本中,我们可以使用menhir parser.mly --list-errors > parser.messages生成parser.messages。错误如下:
main: INT MINUS TIMES
##
## Ends in an error in state: 12.
##
## expr -> expr MINUS . expr [ TIMES RPAREN PLUS MINUS EOF DIV ]
##
## The known suffix of the stack is as follows:
## expr MINUS
##
<YOUR SYNTAX ERROR MESSAGE HERE>通常,--list-errors应该计算所有可能导致错误的方法。但是我不明白为什么像main: INT PLUS DIV和main: INT MINUS DIV这样的方法没有包含在parser.messages中(然而,像5+/这样的表达式仍然正确地引发了一个错误)。有人知道原因吗?
发布于 2022-02-25 17:36:25
通常情况下,(错误)派生集是无限的,因此无法显示或计算它。Menhir启发式地尝试输出有用的错误消息,但不能保证它们是详尽的,甚至是有用的。
https://stackoverflow.com/questions/71269493
复制相似问题