我有以下规则:regExp : branch (PIPE branch)*
。我构建了一个侦听器,在我的exitBranch
方法上,我想知道branch
是否在PIPE
令牌之后。
@Override
public void exitBranch(BranchContext ctx)
{
if (/*branch is preceeded by PIPE)*/)
{
// do stuff
}
}
如果有帮助,这里有一个解析树的例子(PIPE
对应于|
令牌):
regExp
branch
piece
atom a
|
branch
piece
atom b
<EOF>
编辑:我想我可以检查branch
是否是regExp
的第一个子节点,但我希望有更好的解决方案
2条答案
按热度按时间u1ehiz5o1#
如果你打破
变成这样的东西:
您将获得
pipeBranch
的特定上下文,并可以为此设置侦听器。ghhkc1vu2#
只要检查是否是
ctx.PIPE().size() > 0
。如果是这种情况,你就知道你必须有一个前面有PIPE的分支。