ANTLR如何在输入结束时检测垃圾数据

发布于 2024-08-19 16:52:55 字数 177 浏览 3 评论 0原文

当使用 ANTLR 编写的语法时,解析器可以正确识别输入流中的数据,但如果我在输入末尾有一些垃圾文本(不应该由语法解析),解析器不会抱怨。

我想这种行为是可以的(我的意思是解析器完成了它的工作并解析了我所说的它应该解析的任何内容),但是有什么技巧可以检测解析器完成其工作后输入中何时还剩下任何数据吗?

谢谢。

When using grammars written in ANTLR, the parser correctly recognizes data from an input stream, but if I have some rubbish text at the end of the input (which is not supposed to be parsed by the grammar) the parser does not complain.

I guess this behavior is all right (I mean the parser did its job and parsed whatever I said it should parse), but is there any trick to detect when there is any data left in the input after the parser has done its job?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十年不长 2024-08-26 16:52:55

正如 Scott 已经在 ANTLR 邮件列表中回答的那样:

<块引用>

你好,

当使用 ANTLR 编写的语法时,解析器可以正确识别
来自输入流的数据,但是如果我在末尾有一些垃圾文本
输入(语法不应该解析哪些垃圾文本)
解析器不会抱怨。

我想这种行为是可以的(我的意思是解析器完成了它的工作并解析了
无论我说什么它都应该解析),但是有什么技巧可以检测到何时存在
解析器完成工作后,输入中是否还剩下任何数据?

谢谢,
加比。

将 EOF 令牌添加到启动规则的末尾

--斯科特

As Scott already answered on the ANTLR mailing list:

Hello,

When using grammars written in ANTLR, the parser correctly recognizes
data from an input stream, but if I have some rubbish text at the end of
the input (which rubbish text is not supposed to be parsed by the grammar)
the parser does not complain.

I guess this behavior is all right (I mean the parser did its job and parsed
whatever I said it should parse), but is there any trick to detect when there
is any data left in the input after the parser has done its job?

Thanks,
Gabi.

Add an EOF token to the end of your start rule

-- Scott

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文