2015-01-12 1 views
0

Существует моя грамматика JCA Файла:Получить набор инструкций все методы отдельно

methodBody: stackMethod localMethod descriptorMethod * instructionMethod *;

stackMethod: '.stack' NUMBER ';' ;

localMethod: '.locals' NUMBER ';' ;

descriptorMethod: '.descriptor' typeJCA ';' qualifiedNumber ';';

инструкцияModeod: ('L' NUMBER ':')? op = инструкция + ;

инструкция: qualifiedID ('L'? NUMBER) * ';' | '.' QualifiedID '{' (('L' NUMBER) | NUMBER) * ';' '}' ;

Я хочу получить инструкцию по всем методам (instructionMethod *) separateley. С слушателей и посетителей

Exemple:

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

Спасибо.

ответ

0

Это нормально, я нашел решение (Trivial раствор)

Сначала вы должны слушать @Override общественного недействительными enterInstruction (InstructionContext CTX) {

} 

А во-вторых, вы должны слушать в

@Override общественного недействительный exitMethodBody (MethodBodyContext CTX) {// Нее вы будете иметь триггер, сказать: привет, Инструк которые вы только что прочитали раньше, являются моими // И то же самое для всех exitMethodBody }

Спасибо.