1
的,我有以下規則:ANTLR:返回總是相同數量的兒童
statement : TOKEN1 opt1=TOKEN2? opt2=TOKEN3 TOKEN4 -> ^(TOKEN1 opt1? opt2);
此規則將產生有一個或兩個孩子(取決於如果 OPT1定義與否)的AST。
我需要總是有固定數量的孩子(在這種情況下是2)。我知道,這 可以通過執行以下(UNDEFINED
是一個假想的令牌)來實現:
statement : TOKEN1 opt1=TOKEN2 TOKEN4 -> ^(TOKEN1 opt1 UNDEFINED)
| TOKEN1 opt1=TOKEN2 opt2=TOKEN3 TOKEN4 -> ^(TOKEN1 opt1 opt2);
這是罰款只是一個可選的令牌。問題是當我有更高的 數量的可選令牌。必須編寫許多規則才能捕獲所有可能的組合。這個問題如何以優雅的方式解決?
我正在使用ANTLR 3.4/C目標。
感謝,
T.