Compiler construction 如何将我的DSL转换为现有的编程语言?

Compiler construction 如何将我的DSL转换为现有的编程语言?,compiler-construction,dsl,xtext,xpand,Compiler Construction,Dsl,Xtext,Xpand,我想构建一种特定于领域的语言,它可以转换为现有的语言(例如python、SQL)。我试图避免构建一个完整的编译器,并研究了Xtext和Xpand。它们看起来似乎有道理,因为Xtext将用于设计语法和生成解析树,Xpand将使用解析树生成现有语言的代码(如果我错了,请纠正我) 你对此有何看法?你认为有更好的选择来替代XText&Xpand,我可以用它来达到我的目的吗 > P>您可以考虑DMS软件再工程工具包。 它旨在提供通用程序(例如,任意语言或DSL)解析、分析和转换。它自动地从上下文无关语法生

我想构建一种特定于领域的语言,它可以转换为现有的语言(例如python、SQL)。我试图避免构建一个完整的编译器,并研究了Xtext和Xpand。它们看起来似乎有道理,因为Xtext将用于设计语法和生成解析树,Xpand将使用解析树生成现有语言的代码(如果我错了,请纠正我)


你对此有何看法?你认为有更好的选择来替代XText&Xpand,我可以用它来达到我的目的吗

> P>您可以考虑DMS软件再工程工具包。 它旨在提供通用程序(例如,任意语言或DSL)解析、分析和转换。它自动地从上下文无关语法生成AST,支持构建符号表和进行流分析,具有源到源转换以支持翻译,以及来自AST的完整预打印程序。所有这些机制的目的是尽可能少地构建和支持健壮的工具


(我是它背后的负责人。我相信DMS在这方面比Xtext成熟得多,已经使用了13年。YMMV)。

您基本上是在要求可以用来构建源代码到源代码编译器的库或工具。这涵盖了广泛的可能性。我想,为了得到一个有用的答案,你应该描述源代码和目标编程语言以及你打算编写编译器的编程语言。@ HealSeuns:如果他要缩小你的问题,你可以选择用任何通用语言(如C、C++、C、java、……)编写他的翻译程序。他仍然会得到大量的库或工具,那么这有什么帮助呢?他被问到的是,是否有比Xtext更好的东西,而大多数更通用的答案都会失败,因为它们没有解决解析树的实际构建问题,也没有为代码生成提供特定的支持。