gpt4 book ai didi

java - 如何从antlr词法分析器中提取关键字

转载 作者:行者123 更新时间:2023-12-02 09:05:09 26 4
gpt4 key购买 nike

我正在用 Java 为我没有编写的语法构建一个文本编辑器,并且我希望支持语法突出显示。我有一个包含关键字的词法分析器文件(以下是子集):

DATABASE: 'DATABASE';
NATIVE: 'NATIVE' -> mode(NATIVE_QUERY);
SOURCE: 'SOURCE';
CHECK: 'CHECK';
ACTION: 'ACTION';
EXECUTE: 'EXECUTE';
USING: 'USING';
ON: 'ON';
EACH: 'EACH';
FROM: 'FROM';

我想动态读取这些关键字,以用于我正在制作的文本编辑器中这些关键字的语法突出显示。我目前正在手动执行此操作,但我希望文本编辑器动态执行此操作,以防作者更改词法分析器。我该怎么做呢?这是正确的做法吗?

最佳答案

我认为 Antlr 本身没有用于标记“关键字”的归因机制,但这就是您应该阅读的内容。取而代之的是,您可以应用一种黑客,该黑客假定语法中的顺序,从而定义关键字“DATABASE”和“FROM”的第一个和最后一个规则。然后,编写一个方法来遍历ruleNames[]数组,您可以随时调用该方法来累积上面定义的第一个和最后一个规则名称之间的所有关键字名称。要完成这项工作,您必须编写一些注释,例如“//在严重处罚时,仅在“DATABASE”和“FROM”之间的规则中添加关键字产生式。但是,Antlr 词法分析器规则是为了匹配首选项而排序的,因此这黑客攻击可能不起作用。

关于java - 如何从antlr词法分析器中提取关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881498/

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