这可能很简单,但我看不到解决方案。 Antlr v 4.0告诉我:
error(50): C:\Users\Brenden\Dev\proj\WikiParser\antlr\wiki\wikigrammar.g4:27:8:
syntax error: extraneous input '' LINK_BODY '' expecting GT while looking for rule element
这是输入行:
link: '<' LINK_BODY '>' ;
27:8指&lt;字符。不确定发生了什么。是&lt;需要逃脱还是什么?我没有在维基上看到这一点。文件的其余部分似乎解析好了,有几行,这一行上面的一行似乎没问题,它终止了一个;所以我认为其他任何东西都不会弄乱这一行。 HALP?
编辑:这是LINK_BODY,如果重要的话:
LINK_BODY: ~[<">]+ ;
答案 0 :(得分:1)
此语法的问题始于在规则中使用不正确的转义序列'\'
,导致未终止的字符串文字。由于ANTLR 4.0允许词法分析器集(例如[a-z]
)或词法分析器字符串文字(例如'parser'
)包含换行符,每个'
个字符从错误点到结尾文件导致它在所有错误的点上切换进出字符串文字。
对于[尚未发布的] ANTLR 4.0.1,此行为已被更改为禁止在这两个令牌中嵌入换行符。