我正在寻找一种工具,它将采用以下格式的简化代码:
MyObject
{
[Get, Construct]
String name;
[Get, Construct]
String description;
[Get, Set]
Boolean isAlive;
}
并将吐出java / C#代码,如:
public class MyObject {
public MyObject(
String name,
String description) {
this.name = name;
this.description = description;
}
public String getName() {
return this.name;
}
public String getDescription() {
return this.description;
}
public Boolean getIsAlive() {
return this.isAlive;
}
public Boolean setIsAlive(
Boolean isAlive) {
this.isAlive = isAlive;
}
private String name;
private String description;
private Boolean isAlive;
}
这样做的目的是让我的生活变得更轻松,就像我最近做的很多事情一样,它制作的对象只是我们项目逻辑模型中事物的反映。
我已经知道我将如何编写输出,但我只是想知道是否;
A)周围是否有任何工具可以做这种事情? B)是否有任何库(在C#或java中),这对解析输入语言很有用?我知道它是一种自定义语言,但它与C#有很多相似之处。我想知道是否有什么可以节省我一些时间?
答案 0 :(得分:1)
我使用Xtext做了很多很好的经验,这是一个官方的eclipse项目。它具有许多有用的功能,具有非常活跃的社区,易于扩展/可定制和记录良好。 Xtext基于语法定义生成自定义DSL环境,并支持针对eclipse本身,intellJ和Web环境 - 更多信息:https://eclipse.org/Xtext/
此外,还有https://www.jetbrains.com/mps/针对同一问题提供了类似的解决方案。一个亮点可能是投影编辑。
这两个工具都在另一个抽象级别上工作,而不是像使用ANTLR并提供许多解决方案,包括创建针对您的单个目标语言的自定义生成器,以生成代码 - 一旦你进入并符合你的要求,它将使你的生活更轻松。
答案 1 :(得分:0)
您基本上定义了自己的特定于域的语言。如果您想沿着这条路走下去,可以使用类似ANTLR的东西 - 定义语言的工作方式,将定义提供给ANTLR,然后创建一个Java程序,可以读取您的简单规范并将其转换为完整的Java源代码。不过,这可能比你想做的更多。
已有工具将类规范转换为Java代码。通常你必须使用UML来表示你的类设计,使用图形编辑器或基于文本的描述,就像你提出的那样(例如,查看例如this question)。其他工具使用其他语言"代表你的班级,但我并不熟悉那些。
我应该指出,用UML或其他系统表示你的设计几乎和直接输入Java代码一样慢。如果你经常改变一些东西,或者利用机器可读的类表示的其他东西,例如生成图表,自动检查设计规则等,它才真正有用。