簡體   English   中英

YACC:停止解析特定路徑

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

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