如何在 antlr 中捕获换行符并忽略 \n

How to catch newline and ignore \n in antlr

我在 antlr 中遇到字符串标记问题。我必须接受像 "abc\n" 这样的字符串,但是当我推送像

这样的字符串时会抛出错误
"abc  




                       "

如何捕获换行符并忽略 \n ?

规则

STRING : '"' ( ~[\"\r\n] | '\' ~[\r\n] )* '"'; 

将匹配:

  • "foo bar"
  • "foo\bar"
  • "foo\"bar"
  • "foo\nbar"

并拒绝:

"foo
bar"

如果您还想匹配被拒绝的输入,请执行以下操作:

STRING : '"' ( ~[\"] | '\' [\"] )* '"';