如何从子规则上下文ANTLR 4获取令牌?

时间:2016-01-02 23:08:43

标签: antlr4

这是我的图像结构ANTLR 4解析树gui:

enter image description here

这是我的听众规则enterEclaration:

   public void enterDeclaration(ADTCParser.DeclarationContext ctx) { 

    TokenStream tokens = parser.getTokenStream();
    String initDeclarationList = tokens.getText(ctx.initDeclarationList());
   }

从initDeclarationList获取令牌,例如:

String initDeclarationList = tokens.getText(ctx.initDeclarationList());
String parameterDeclaration = ???

我的问题是"如何从子规则中获取令牌" parameterDeclaration"来自"基于上图的结构?

BTW,即时通讯在ANTLR 4中使用语法C. 这是语法的链接:https://github.com/antlr/grammars-v4/blob/master/c/C.g4

1 个答案:

答案 0 :(得分:1)

像这样:

ADTCParser.ParameterDeclarationContext context = parser.declaration()
        .initDeclaratorList()
        .initDeclarator()
        .declarator()
        .directDeclarator()
        .parameterTypeList()
        .parameterList()
        .parameterDeclaration();

其中parser.declaration()是您的ADTCParser.DeclarationContext ctx参数。