2015-02-23 2 views
0

Я анализирую SQL как язык, и у меня возникают проблемы с обработкой комментариев. Идея состоит в том, чтобы игнорировать их.ANTLR 4 как разобрать комментарии

У меня есть эти правила:

NEWLINE: '\r'? '\n' -> skip 
WS : [ \t]+ -> skip 

Как я могу игнорировать:

  • Все, что находится между '-' или '#' и следующий '\ п'
  • Все между '/ ' и ' /' (слэш + звездочка до астерикса + слэш - звездочка как-то исчезла).

Я пытался что-то вроде этого перед WS и NEWLINW:

COMMENT1 : ('--'|'#') ~'\n'* -> skip; 

не работал - я получил:

line 1:115 missing ';' at '<EOF>' 

вероятно что-то, потому что он не пошел с моим основное правило: parse: (statments (';') +) * EOF;

Может ли кто-нибудь мне помочь?

С уважением idob

ответ

1

Если вы сомневаетесь, посмотрите, что кто-то сделал;)

There are some ready-made grammars for different languages, более или менее работать.

Так я смотрю в грамматике Java и посмотреть:

COMMENT 
: '/*' .*? '*/' -> skip 
; 
LINE_COMMENT 
: '//' ~[\r\n]* -> skip 
; 

Так что ваша общая идея кажется правильным. Я предполагаю, что проблема лежит где-то в другом месте. Можете ли вы предоставить образец ввода, который вы тестируете, и свою грамматику (соответствующие части)?

+0

Отлично ,,, спасибо! –

Смежные вопросы