gpt4 book ai didi

JavaParser:如何添加新的语言元素

转载 作者:搜寻专家 更新时间:2023-11-01 02:00:16 24 4
gpt4 key购买 nike

我想创建一个 Java 转译器,它将读取接近 Java 的代码(称之为 JavaHash)并在另一端发出“纯”Java 代码。特别是,我想在 hashmap 成员前面添加一个新标记,即井号标签“#”,这样我就可以像访问 JavaScript 哈希对象一样访问它:

Map<String, String> foo = new HashMap<String, String>();
...
foo.put("name", "Roger");
...
String name = #foo.name;

我无法让 JavaParser 执行任何操作,只能在“#”井号标签上抛出错误。

有没有办法在 token 被解析之前捕获它们?

最佳答案

这远非微不足道,但却是可行的。

JavaParser 基于JavaCC , 它使用 the following grammar生成解析器代码。然后,解析器使用代码模型类创建一个抽象语法树。

如果你想添加新的语言元素,你需要:

  • 实现代码模型类;
  • 扩展用于解析器生成的语法。

这并不容易,您需要具备良好的 JavaCC 知识和理解能力。但这是绝对可行的。

剩下的就是花生了。您将编写一个访问者并使用它来遍历 AST。一旦遇到适当类型的节点,只需将 AST 的部分转换为“普通”Java 并序列化。

顺便说一句,JavaParser 是构建您想要的东西的非常好的基础。恭喜您的选择,实际上这已经成功了一半。

关于JavaParser:如何添加新的语言元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260469/

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