1

我正在尝试了解.messagesmenhir 生成的文件。

这个示例中,我们可以使用它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 DIVmain: INT MINUS DIV不包括在内的方式parser.messages(但是,表达方式5+/仍然正确地引发错误)。有谁知道原因?

4

1 回答 1

2

通常,(错误)推导的集合是无限的,因此无法显示或计算它。Menhir 试探性地尝试输出有用的错误消息,但不能保证它们会详尽甚至有用。

于 2022-02-25T17:36:25.383 回答