ANTLR 4如何解析注释

时间:2015-02-23 13:27:30

标签: antlr4

我正在解析类似SQL的语言,我在解析注释时遇到问题。 我们的想法是忽略它们。

我有这些规则:

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

我怎么能忽略:

  • 介于' - '或'#'之间的所有内容和下一个' \ n'
  • ' / '之间的所有内容和' /' (斜线+星号,直到asterix +斜线 - 星号不知何故消失了。)

我在WS和NEWLINW之前尝试过类似的东西:

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

没有工作 - 我得到了:

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

可能是因为它没有符合我的主要规则: 解析:(陈述(&#39 ;;&#39;)+)* EOF;

任何人都可以帮助我吗?

关心idob

1 个答案:

答案 0 :(得分:1)

如果有疑问,请看看其他人做了什么;)

There are some ready-made grammars for different languages,或多或少的工作。

所以我查看Java的语法并看到:

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

所以你的总体想法似乎是正确的。我猜这个问题出在其他地方。你能提供你测试的样本输入和你的语法(相关部分)吗?