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

时间:2018-05-09 19:09:09

标签: java javaparser

我想创建一个Java转换器,它将读取几乎Java代码(称之为JavaHash)并发出" pure"另一端是Java代码。特别是,我想添加一个新标记,它是标签"#"在hashmap成员前面,以便我可以像JavaScript哈希对象一样访问它:

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

我无法让JavaParser做任何事情,只会在&#34;#&#34;上抛出错误。主题标签

有没有办法在解析之前捕获令牌?

1 个答案:

答案 0 :(得分:6)

这远非琐碎,但可行。

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

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

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

这不是那么容易,您需要对JavaCC有很好的了解和理解。但它绝对可行。

其余的是花生。您将编写一个访问者并使用它来遍历AST。一旦您遇到了相应类型的节点,只需将AST的一部分转换为&#34; normal&#34; Java和序列化。

顺便说一下,JavaParser是一个非常好的基础来构建你想要的东西。祝贺你的选择,实际上,这只是交易的一半。