写一个“介于两者之间”的ANTLR动作

时间:2010-08-24 14:08:39

标签: antlr

我正在制作一个看起来像......的ANTLR语法。

A : B+;

...我希望能够在B的每个实例之前和之后执行一个动作。例如,我想要像......这样的东西......

A : A {out("Before");} B {out("After");}
  | {out("Before");} B {out("After");};

这样在输入流A B B上我会看到输出...

Before
After
Before
After

当然,由于左递归规则,第二个示例不是有效的ANTLR语法。有没有办法用正确的ANTLR语法实现我想要的东西?

我还应该提到,还有其他方法可以达到B规则,因此简单地围绕B规则前后都不会有效。

1 个答案:

答案 0 :(得分:1)

不喜欢

A : ({out("Before");} B {out("After");})+;

工作?