У меня есть грамматика, которая работает с v3, и сейчас я пытаюсь перейти на v4. Я получил несколько советов из вопросов 18431158 и 14778570, но у меня есть еще один вопрос:
В моем коде v3 я подсчитывал номера строк следующим образом (newLine() просто ведет подсчет проанализированных строк и сохраняет его, чтобы позже, когда я попытаюсь сообщить о некоторых семантических ошибках, я мог также сообщить соответствующий номер строки):
COMMENT : '/*' ( options {greedy=false;} :
(
'\n' {newLine();}
| ~ '\n'
) )* '*/' {$channel=HIDDEN;}
;
LINE_COMMENT : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN; newLine();} ;
WS: (
' '
|'\r'
|'\t'
|'\n' {newLine();}
)+ {$channel=HIDDEN;};
В v4 действия лексера не разрешены внутри. Как мне перенести этот код на v4?