1

我对修改 Java 语法和一些隐式范式很感兴趣。由于我使用 Eclipse 进行开发,它提供了自己的编译器,也可以独立使用,我想知道是否无法扩展 ecj 以尊重其他语法规则(并正确处理它们)。

我的语法更改都可以通过从 AST 中删除元素并创建一些新元素来解决,因此我假设我想要做的事情是可能的,而无需深入研究字节码。

本质上,我想做的可以通过在实际编译之前“虚拟地”修改源代码来完成。但是我怀疑这样做会弄乱源映射,这会使调试变得很糟糕。

旁注:我知道 Lombok 项目,它扩展和更改了类编译,但是 Lombok 仅使用注释,并且严格来说不修改语法。所以我想做的是对语言规范更具侵入性。

4

1 回答 1

4

正如评论中提到的对象团队:

(1) Object Teams 本身为自己的语言OT/J扩展了 JDT,它是 Java 的扩展。这是在双重策略中完成的:

  • 我们维护一个org.eclipse.jdt.core 的分支。虽然这是相当繁重的工作,但它成功地证明了 JDT 架构适合修改。
  • 我们使用我们自己的角色对象概念来非侵入性地调整IDE 其他部分(特别是 org.eclipse.jdt.ui)的行为,以反映 OT/J 的语义

(2) 我有一些(旧的)博客文章演示了如何使用 OT/J 来创建 JDT 的非侵入性变体,包括对扩展语法的支持:

免责声明:我是 OT/J 的作者和实现的领导者,后来成为 Eclipse JDT 的提交者。

更多问题,有一个论坛

于 2020-02-15T13:40:36.763 回答