Antlr初学者不匹配令牌问题
我刚刚开始使用 Antlr,所以请原谅这里的菜鸟问题。我迷路了。任何帮助表示赞赏。
这是我的语法脚本:
grammar test;
script :
'begin script' IDENT ':'
'end script' IDENT
;
IDENT : ('a'..'z' | 'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*
;
这是我尝试运行它的脚本:
begin script spork:
end script spork
ANTLRWorks 1.3.1 中的结果:
我是什么做错了吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您通常希望使用词法分析器规则告诉 ANTLR 忽略空格:
You usually want to tell ANTLR to ignore whitespace with a lexer rule:
我对 AntLR 没有太多经验,但我的猜测是词法分析器正在为换行符生成一个标记,并且它与您的语法不匹配。
通常,当您编写解析器时,您必须明确告诉词法分析器忽略空格和行结尾。但我可能是错的,这可能是 AntLR 应该为你做的事情。
I don't have much experience with AntLR, but my guess is that the lexer is producing a token for the newline and it's not matched in your grammar.
Normally when you're writing a parser you have to tell the lexer explicitly to ignore whitespace and line endings. But I could be wrong, that could be something that AntLR is supposed to do for you.