gpt4 book ai didi

java - 将由两个单词组成的关键字添加到 CDT

转载 作者:行者123 更新时间:2023-11-30 05:34:08 25 4
gpt4 key购买 nike

要拥有自定义关键字,我执行以下操作:

  • plugin.xml 中定义语言并扩展 GPPLanguage 类。
  • 扩展 CLanguageKeywords 并覆盖 getKeywords 以返回 super.getKeywords 以及自定义关键字:

    public class MyLanguageKeywords extends CLanguageKeywords {
    public MyLanguageKeywords(ParserLanguage language, IScannerExtensionConfiguration config) {
    super(language, config);
    }

    @Override
    public String[] getKeywords() {
    String[] cppKeywords = super.getKeywords();
    String[] myKeywords = new String[] {
    "input",
    "output",
    "input port",
    "output port",
    };
    return (String[]) ArrayUtils.addAll(cppKeywords, myKeywords);
    }
    }
  • 实现 getAdapter() 以返回 MyLanguageKeywords 的实例

这适用于“输入”和“输出”,但不适用于“输入端口”或“输出端口”。如何让“端口”的关键字突出显示,但仅在“输入端口”或“输出端口”组合中突出显示?

最佳答案

我可以想到两个选择:

  1. 修改 CDT 的词法分析器以支持包含空格的关键字。我认为这不能使用公共(public) API 来完成,您必须修改核心 CDT 类,例如 org.eclipse.cdt.internal.core.parser.scanner.Lexer。 (或者,您可以考虑上游补丁以向词法分析器添加此类支持。)

  2. 使用语义突出显示来突出显示包含空格的关键字。有一个 org.eclipse.cdt.ui.semanticHighlighting 扩展点,允许插件提供自定义语义突出显示。

用户体验的差异在于,每次击键后立即应用词汇突出显示,而在键入停止后短暂延迟后应用语义突出显示(因为计算成本更高)。如果将 overridefinal 关键字当前在 C++ 中突出显示的方式与其他关键字(override)进行比较,您就会看到这种效果>final 使用语义突出显示,因为它们是上下文相关的关键字。

我还应该提到,第二种方法是否有效,取决于您的新关键字如何适应语法。它们需要被解析为 IASTName 以便对它们应用语义突出显示。

关于java - 将由两个单词组成的关键字添加到 CDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950751/

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