首页 > 解决方案 > 如何在 antlr 中捕获换行符并忽略 \n

问题描述

我对 antlr 中的字符串令牌有疑问。我必须接受像“abc\n”这样的字符串,但是当我推送一个像这样的字符串时会抛出一个错误

"abc  




                       "

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

标签: stringantlr

解决方案


规则

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

将匹配:

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

并拒绝:

"foo
bar"

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

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

推荐阅读