[英]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.