Ich möchte in der Lage sein, eine „Meta-Regel“ in ANTLR4 zu schreiben, die eine Regel als Eingabe Argument nimmt und führen eine Reihe Modifikation von dieser Regel. Hier ist ein Beispiel Grammatik:ANTLR4 Parser Regeln mit anderen Parsern Regeln als Argument (Meta-Regeln)
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;
Die Regeln für pterm
und psum
haben die gleiche Wirkung auf term
und sum
, sie in möglicherweise verschachtelten Klammern umschließen. Ich mag die letzten drei Zeilen weiter oben mit so etwas wie die folgenden ersetzen können:
enclose[rule]: '(' rule ')' | '(' enclose(rule) ')';
expr: term | sum | enclose(term) | enclose(sum);
Gibt es eine Möglichkeit, eine Meta-Regel wie diese zu konstruieren?
Dank für die Überprüfung, dass dies nicht praktikabel ist. Ich glaube, ich habe versucht, im Parser zu viel zu machen. Ich habe den (komplizierteren) Parser neu geschrieben, um allgemeiner zu sein, und etwas von dem, was ich versucht habe, an den Parser-Handler verschoben. – user2487951