繁体   English   中英

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

[英]JavaParser: How to add new language elements

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

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

我无法让JavaParser做任何事情,只是在“#”主题标签上抛出错误。

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

这远非琐碎,但可行。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM