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
で同じアクションを実行します。私は次のようなもので上記の最後の3行を交換できるようにしたいと思います:
enclose[rule]: '(' rule ')' | '(' enclose(rule) ')';
expr: term | sum | enclose(term) | enclose(sum);
このようなメタルールを構築する方法はありますか?
これは実行できないことを確認していただきありがとうございます。私はパーサであまりにも多くをやろうとしていたと思う。私は(より複雑な)パーサーをより一般的なものに書き直し、私がしようとしていることをパーサハンドラに移しました。 – user2487951