Нов съм в ANTLR и измислих това правило за лексер за анализиране на коментари, ще работи ли?
COMMENT_LINE : (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};
(Не можах да намеря нищо относно синтаксис като този в документите)
Нов съм в ANTLR и измислих това правило за лексер за анализиране на коментари, ще работи ли?
COMMENT_LINE : (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};
(Не можах да намеря нищо относно синтаксис като този в документите)
Вашето правило изобщо не се компилира. Ако използвате ANTLRWorks, за да създадете нова граматика на лексер, можете да поставите отметка в квадратче, за да генерира правило за лексер, което съответства на коментари на един ред. Той генерира това:
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
;
Като алтернатива можете да използвате нещо подобно, за да съпоставите коментари в един ред:
COMMENT_LINE
: COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
;
-
, вероятно ще причини някакъв вид грешка. Можете ли да обясните какво имате предвид с това? И можете ли да дадете няколко примера за низовете, които се опитвате да анализирате? - person Bart Kiers   schedule 09.12.2009ANY_CHAR : . ;
не е последното правило, граматиката няма да работи, тъй като всяко правило след това никога няма да може да съпостави нищо, тъй катоANY_CHAR
ще погълне всичко. Но предполагам, че Боян е отговорил успешно на въпроса ви, нали? - person Bart Kiers   schedule 09.12.2009