分别获取所有方法的指令集

时间:2015-01-12 19:43:48

标签: listener antlr4 visitor

我的语法是JCA文件:

methodBody:stackMethod localMethod descriptorMethod * instructionMethod *;

stackMethod:'。stack'NUMBER';' ;

localMethod:'.locals'NUMBER';' ;

descriptorMethod:'。descriptor'typeJCA';' qualifiedNumber';';

instructionMethod:         ('L'NUMBER':')? OP =指令+         ;

指令:         qualifiedID('L'?NUMBER)*';'         |'。'qualifiedID'{'(('L'NUMBER)| NUMBER)*';' '}'         ;

我想得到所有方法的指令(instructionMethod *)separateley。听众或访客

例如:

@Override
public void enterInstructionMethod(InstructionMethodContext ctx) {
    //Print all instruction+ (one by one in a loop or any way)
}

感谢。

1 个答案:

答案 0 :(得分:0)

没关系,我找到了一个解决方案(Trivial解决方案)

首先你必须听     @覆盖     public void enterInstruction(InstructionContext ctx){

}

其次你必须听

@覆盖     public void exitMethodBody(MethodBodyContext ctx){         //她将会有触发器说:嗨,你之前读过的指令是我的         //对于所有exitMethodBody都一样     }

感谢。