Accessing sub context of a rule context in Antlr4 using visitor

Viewed 960

I am trying to parse Java class files using Java.g4 grammar and Antlr4. There is a particular parser rule as follows:

classOrInterfaceType
:   Identifier typeArguments? ('.' Identifier typeArguments? )*
;

I am parsing it in my visitor class in this way:

public String visitClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext ctx) {
    StringBuilder clsIntr = new StringBuilder("");
    int n = ctx.getChildCount();
    for(int i = 0; i < n; i++){
        TerminalNode id = ctx.Identifier(i);
        if(id!=null){
            clsIntr.append(id.getText()).append(" ");
        }
        TypeArgumentsContext typArgCtx =ctx.typeArguments(i);
        if(typArgCtx!=null){
            String val = this.visitTypeArguments(typArgCtx);
            clsIntr.append(val);
        }
    }
    return clsIntr.toString();
}

Is this correct or there is some other way to do this?

1 Answers
Related