gpt4 book ai didi

java - 如何使用ANTLR4进行精确的词解析?

转载 作者:行者123 更新时间:2023-12-01 11:45:19 24 4
gpt4 key购买 nike

我有以下语法

grammar test;

expression : SALUTATION NAME;

SALUTATION:'Hello';
NAME: ('a'..'z'|'A'..'Z')+;

如果我有一个像这样的输入字符串

  1. 约翰你好
  2. 约翰你好。
  3. 你好,约翰·史密斯

所有这些字符串都将被该语法正确解析

如何修改语法以使其仅解析具有与示例 1 中完全相同的语法定义的字符串,而在示例 2 和 3 等其他情况下会失败?

最佳答案

非常简单:

expression : SALUTATION NAME EOF;

添加 EOF 将强制解析器尝试匹配自动插入到 token 流末尾的 EOF(文件结尾) token 。所以如果最后有额外的数据,它就会失败。

您还可以在文件的末尾添加以下词法分析器规则:

UNKNOWN_CHAR: . ;

这将确保词法分析器始终成功,并且所有错误都将在解析器中发生。

关于java - 如何使用ANTLR4进行精确的词解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29186440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com