理解 menhir 生成的 .messages 文件
Understand .messages file generated by menhir
我正在尝试理解由 menhir 生成的 .messages
文件。
来自 this sample, we could use menhir parser.mly --list-errors > parser.messages
to generate 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+/
这样的表达式仍然正确地引发错误)。有谁知道原因吗?
通常,(错误)导数集是无限的,因此无法显示或计算它。 Menhir 试探性地尝试输出有用的错误消息,但不能保证它们会详尽无遗甚至有用。
我正在尝试理解由 menhir 生成的 .messages
文件。
来自 this sample, we could use menhir parser.mly --list-errors > parser.messages
to generate 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+/
这样的表达式仍然正确地引发错误)。有谁知道原因吗?
通常,(错误)导数集是无限的,因此无法显示或计算它。 Menhir 试探性地尝试输出有用的错误消息,但不能保证它们会详尽无遗甚至有用。