我正在嘗試了解.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 DIV和main: INT MINUS DIV不包括在內的方式parser.messages(但是,表達方式5 /仍然正確地引發錯誤)。有誰知道原因?
uj5u.com熱心網友回復:
通常,(錯誤)推導的集合是無限的,因此無法顯示或計算它。Menhir 試探性地嘗試輸出有用的錯誤訊息,但不能保證它們會詳盡甚至有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436482.html
下一篇:決議ascii表頭
