簡體   English   中英

如何告訴 flex 和 bison 停止處理輸入?

[英]How to tell flex and bison to stop processing input?

遇到錯誤時,flex 和 bison 停止處理的最佳方法是什么。 如果我調用 yyerror,它不會停止掃描和解析我的文件。 雖然輸入在語法上是正確的,但存在用戶錯誤,例如他們試圖加載同一個文件兩次。 一旦我退出 flex/bison,那么我的程序將向用戶返回一個錯誤,並且程序應該繼續運行。 我假設拋出 C++ 異常可能會破壞一些東西?

YYABORT是標准的退出方式; 它會導致yyparse立即返回失敗( 1 )。 然后,您可以拋出異常或做任何您想做的事情。 如果要解析其他內容,則需要重置 flex 的輸入,但如果這樣做,您可以再次調用 yyparse,解析將從頭開始。

YYACCEPT 停止解析並返回 0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM