4
仍然在學習yacc和flex,並且遇到了我沒有涉及的操作指南和教程的場景。我試圖解析一個文件,並且當我正在進行時,我在我放入我的parser.y
文件中的代碼中進行了一些輔助錯誤檢查。當我遇到按字典順序正確(即解析正確匹配)但邏輯不正確(意外值或不適當值)的情況時,如何退出yyparse
?另外,我可以讓它返回一個錯誤代碼給我,我可以在我的調用代碼中檢查嗎?使用yacc時,你如何告訴yyparse()你想停止解析?
/* Sample */
my_file_format:
header body_lines footer
;
header:
OBRACE INT CBRACE
|
OBRACE STRING CBRACE {
if (strcmp ($1, "Contrived_Example") != 0) { /* I want to exit here */ }
}
;
/* etc ... */
我意識到,在我的例子,我可以簡單地尋找「Contrived_Example」使用規則,但我的觀點是在if
- 塊 - 我可以告訴yyparse
,我想停在這裏解析?
將調查;謝謝。 – Will 2011-03-02 02:56:21
+1幾乎是我想要的 - 它確實退出瞭解析,儘管以一種相當突然的方式。 – Will 2011-03-02 17:00:27