ANTLR 4 如何解析注释

Ido*_*ash 3 antlr4

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

我有这些规则:

NEWLINE: '\r'? '\n' -> skip 
WS  :    [ \t]+ -> skip 
Run Code Online (Sandbox Code Playgroud)

我怎样才能忽略:

  • '--' 或 '#' 与下一个 '\n' 之间的所有内容
  • '/ ' 和 ' /' 之间的所有内容(斜杠 + 星号,直到 asterix + 斜杠 - 星号以某种方式消失)。

我在 WS 和 NEWLINW 之前尝试过类似的事情:

COMMENT1 : ('--'|'#') ~'\n'* -> skip;
Run Code Online (Sandbox Code Playgroud)

没用 - 我得到:

line 1:115 missing ';' at '<EOF>'
Run Code Online (Sandbox Code Playgroud)

可能是因为它不符合我的主要规则: parse : (statements (';')+)* EOF;

谁能帮我?

问候伊多布

Ger*_*ino 6

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

有一些针对不同语言的现成语法,或多或少有效。

所以我查看了 Java 的语法,发现:

COMMENT
: '/*' .*? '*/' -> skip
;
LINE_COMMENT
: '//' ~[\r\n]* -> skip
;
Run Code Online (Sandbox Code Playgroud)

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