[英]YACC: Stop parsing specific path
我正在使用Python PLY解析特定語言。 對於像這樣的語法:
IF LPAREN condition RPAREN LBRACE stmtlist RBRACE ELSE LBRACE stmtlist RBRACE
當我知道condition
值時,說為True,那么有沒有辦法停止在ELSE
路徑中解析stmtlist
?
謝謝,
您將不得不繼續解析,因為您需要找到第二個RBRACE
包圍的塊的RBRACE
; 換句話說,您需要分析以找到下一條語句的開頭。
就是說,當您分析解析的結果 (生成代碼,構造AST,無論您需要做什么)時,如果可以確定condition
始終為true
(也許它是表達式1 = 1
),那么您可以禁止為第二個stmtlist
生成代碼。
更新:
語法(語言的語法 )是非過程性指定的,因此沒有附加條件邏輯的位置。
另一方面,您指定當語法的特定句法元素匹配時要采取的語義動作,然后按程序進行操作。 在PLY中 ,您可以通過對語法規則函數的主體進行編碼來實現。 在與第二個stmtlist
匹配的語法規則函數中,您可以根據已發現的有關輸入程序(編譯語言處理器的輸入)的其他信息,編寫條件代碼以跳過代碼生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.