我创造了一种编程语言,并把它写在我的电脑上。它是一种实验性的非专业编程语言,我创建它只是为了好玩。
一门语言需要最重要的东西,一个编译器。
把源代码转换成C/++然后调用GCC是不是个好主意?
我的语言看起来像C++和Java,没有解析器就不难转换。
我的目标不是优化任何东西,也不是为每个平台生成一个二进制文件。如果我生成一个C源代码,我可以在许多平台上编译它,并使用GCC优化。
我不知道可能对我有帮助的工具,我知道一些工具的名字是yacc和llvm,但我不知道它们对我有什么帮助。
fun的第一部分是编程语言的设计,第二部分是运行时细节的实现。我认为解析器的实现并不是一件很有趣的事情。
谢谢
发布于 2011-04-05 09:24:44
为了对抗Mehrdad,将你的语言转换成C语言是一个很好的想法。许多语言编译器将其编译为C语言,并将其用作“可移植程序集”。现在,为GCC创建一个前端是一个很好的想法,但它提高了初始复杂性的门槛。对于GCC来说,创建C代码要比前端简单得多。
或者,在这个问题上,把它转换成你喜欢的任何语言,你认为会是一个合适的目标,无论你喜欢什么。例如,我已经编写了创建Java代码的编译器。
你语言中的语法部分可能不是很有趣,但它很可能是你的第一个挫败点。因此,明智的做法是稍微关注一下其他语言的功能,并查看它们的语法。考虑一些简单的Pascal递归解析器,如果您认为您的语言可以使用它的话。或者查找Yacc和ANTLR语法。
大多数人最初发现令人沮丧的是简单的表达式。
a + b * ( c - sqrt(12 / 4) + sin(30))许多人在使用表达式时遇到了问题。在你让表达式工作之后,剩下的就可以很容易的就位了(假设你使用的是类似Algol/C的语言,而不是你正在使用的其他语法风格)。
发布于 2011-04-05 09:15:01
我自己并不是这方面的专家,但据我所知,将你的代码“转换”成C或C++是一个非常糟糕的想法,尤其是在使用GCC的时候。
GCC被设计成具有“插件”架构。相反,您应该为能够处理来自您的语言的代码的GCC编译器创建一个前端,并让GCC的后端负责代码的生成和优化。
(我自己没有这样做过,所以我不知道它将如何工作的细节。)
发布于 2011-04-05 09:25:08
如果您的真正目标--记住,我的意思是,您认为从事这项工作会很有趣;-) --是语言设计,那么我会说,避免编写自己的全能编译器是完全没有问题的。唯一的问题是,编写一个从你的语言到C语言(++)的翻译器真的那么容易吗?这可能比写一个前端到gcc或LLVM (尽管如果你的目标不同,这些都是严肃的方法)更容易。
我的建议是从C/C++转换器开始。
https://stackoverflow.com/questions/5546076
复制相似问题