gpt4 book ai didi

java - antlr4 上的精确字符串解析

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

我在解析文件时遇到问题。场景如下:

在我要解析的文件中,我的值如下

ABC/123/测试

前 3 个字母是某种标识符,这是我可以区分各行的唯一方法

在语法文件中:

file1: str1?;       

str1 : NEWLINE identifier1 SLANT INTEGER SLANT ALPHA;

INTEGER : [0-9]+;
ALPHA : [A-Z]+;
SLANT : '/';
NEWLINE : '/n';

identifier1 : 'ABC';

运行解析器时,解析器没有将行标识符获取为 ABC,而是给了我一些奇怪的错误

mismatched input 'ABC' expecting 'ABC'

我如何解析antlr4中的精确字符串?

最佳答案

问题在于您的词法分析器将 ABC 词法为 ALPHA 而不是 identifier1。原因如下:

  1. 您的 identifier1 规则应该是词法分析器而不是解析器规则。因此将其重命名为 IDENTIFIER1
  2. IDENTIFIER1 规则必须在 ALPHA 规则之前声明,否则 ALPHA 将始终具有更高的优先级和 ABC 将被解析为 ALPHA 而不是 IDENTIFIER1。因此,请务必将您的 IDENTIFIER1 规则移至 ALPHA 规则之上,然后一切都会正常。

关于java - antlr4 上的精确字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766657/

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