我正在尝试了解.messages
menhir 生成的文件。
从这个示例中,我们可以使用它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+/
仍然正确地引发错误)。有谁知道原因?