1
我希望能夠在ANTLR4中編寫一個將規則作爲輸入參數並對該規則執行一組修改的「元規則」。下面是一個例子語法:ANTLR4解析器規則與其他解析器規則作爲參數(元規則)
grammar G;
WS: [ \t\n\r] + -> skip;
CHAR: [a-z];
term: (CHAR)+;
sum: term ('+' term)+;
pterm: '(' term ')' | '(' pterm ')';
psum: '(' sum ')' | '(' psum ')';
expr: term | sum | pterm | psum;
爲pterm
和psum
的規則上term
和sum
執行相同的動作,可能是嵌套的括號括起來。我希望能夠與類似以下替換最後一個三線以上:
enclose[rule]: '(' rule ')' | '(' enclose(rule) ')';
expr: term | sum | enclose(term) | enclose(sum);
有沒有一種方法來構造元規則是這樣?
感謝您驗證這是行不通的。我認爲我在解析器中嘗試做太多。我已經將(更復雜的)解析器重寫爲更一般化,並且將我正在嘗試對解析器處理器進行的一些操作改爲。 – user2487951