写一个ANTLR行动“;在两者之间;多种多样
我正在研究一个ANTLR语法,看起来像写一个ANTLR行动“;在两者之间;多种多样,antlr,Antlr,我正在研究一个ANTLR语法,看起来像 A : B+; …我希望能够在B的每个实例之前和之后执行操作。例如,我希望 A : A {out("Before");} B {out("After");} | {out("Before");} B {out("After");}; 因此,在输入流abb上,我将看到输出 Before After Before After 当然,由于左递归规则,第二个示例不是有效的ANTLR语法。有没有一种方法可以通过正确的ANTLR语法实现我想要的 我还应该提到
A : B+;
…我希望能够在B的每个实例之前和之后执行操作。例如,我希望
A : A {out("Before");} B {out("After");}
| {out("Before");} B {out("After");};
因此,在输入流abb
上,我将看到输出
Before
After
Before
After
当然,由于左递归规则,第二个示例不是有效的ANTLR语法。有没有一种方法可以通过正确的ANTLR语法实现我想要的
我还应该提到,还有其他方法可以达到B规则,所以简单地用before和after来包围B规则是行不通的。不是这样吗
A : ({out("Before");} B {out("After");})+;
工作