我的语法是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)
}
感谢。
答案 0 :(得分:0)
没关系,我找到了一个解决方案(Trivial解决方案)
首先你必须听 @覆盖 public void enterInstruction(InstructionContext ctx){
}
其次你必须听
@覆盖 public void exitMethodBody(MethodBodyContext ctx){ //她将会有触发器说:嗨,你之前读过的指令是我的 //对于所有exitMethodBody都一样 }
感谢。