java - 如何轻松解析自定义编程语言

标签 java c# parsing syntax

我正在寻求开发一种工具,该工具将采用以下格式的简化代码:

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;
}

这样做的目的基本上是让我的生活更轻松,因为我最近所做的很多事情都是制作简单地反射(reflect)我们项目逻辑模型中事物的对象。

我已经知道如何编写输出,但我只是想知道;

A)是否有任何工具可以做这种事情? B) 是否有任何库(C# 或 java 中的)对解析输入语言有用?我知道它是一种自定义语言,但它与 C# 有很多相似之处。我想知道是否有什么可以节省我的时间?

最佳答案

我在 Xtext 上获得了很多很好的经验,Xtext 是一个官方的 Eclipse 项目。它具有许多开箱即用的有用功能,拥有相当活跃的社区,易于扩展/可定制并且记录良好。 Xtext 根据语法定义生成自定义 DSL 环境,并支持针对 eclipse 本身、intellJ 和 Web 环境 - 更多信息:https://eclipse.org/Xtext/

此外还有https://www.jetbrains.com/mps/它针对同一问题提供了类似的解决方案。一个亮点可能是投影编辑。

这两种工具都在另一个抽象级别上工作,例如使用 ANTLR 并提供许多解决方案,包括创建针对您的个人目标语言的自定义生成器以生成例如代码 - 一旦您进入并且它符合您的要求,它将使您的生活变得更轻松。

关于java - 如何轻松解析自定义编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207756/

相关文章:

c# - Hangfire 获取上次执行时间

java - 链表中的头节点

java - Jsf 属性未保存

c# - 无法从 Microsoft.Extensions.Logging 解析 ILogger

c# - 如何在 C# 中创建 UTF8 文件

c# - 我应该如何用科学记数法(+301)解析一个非常大的数字?

c - 使用 sscanf 解析不会保留数组以供后续使用

Java - 这段代码的解释是什么?

java - 如何在jdbctemplate中使用groupBy进行查询

ruby-on-rails - 解析 URL 以提取域的最佳方法是什么?