我对修改Java语法和一些隐式范例感兴趣。由于我使用Eclipse进行开发,Eclipse提供了自己的编译器,也可以单独使用,因此我想知道是否不可能扩展ecj以尊重其他语法规则(并正确地处理它们)。
通过从AST中移除元素并创建一些新元素,我的语法更改都是可以解决的,所以我假设不需要深入字节码就可以完成我想做的事情。
本质上,我想做的事情可以通过在实际编译之前对源代码进行“虚拟”修改来完成。然而,我怀疑这样做会扰乱源代码映射,这将使调试变得非常糟糕。
关于sidenote:我知道Lombok项目,它扩展和修改类编译,但是Lombok只使用注释,严格地说不修改语法。所以我想做的是对语言规范有更多的侵犯性。
发布于 2020-02-15 13:40:36
正如评论中提到的对象团队一样:
(1)对象团队本身将JDT扩展为自己的语言OT/J,这是Java的一个扩展。这是一种双重战略:
(2)我有一些(旧的)博客文章演示了OT/J如何用于创建JDT的非侵入性变体,包括对扩展语法的支持:
免责声明:我是OT/J的作者,也是它的实现负责人,后来成为Eclipse的提交人。
关于进一步的问题,有一个论坛。
https://stackoverflow.com/questions/60170365
复制相似问题