Programming languages 程序设计语言

Programming languages 程序设计语言,programming-languages,compiler-construction,Programming Languages,Compiler Construction,我创建了一种编程语言,并在我的计算机中编写。这是一种实验性的非专业编程语言,我是为了好玩而创建的 语言需要最重要的东西,编译器 将源代码转换为C/++并调用GCC是一个好主意吗 我的语言看起来像C++和java,没有解析器就不难转换。 我的目标不是优化任何东西,也不是为每个平台生成二进制文件。如果我生成一个C源代码,我可以为许多平台编译它并使用GCC优化 我不知道哪些工具可以帮助我,我知道一些工具的名字是yacc和llvm,但我不知道它们如何帮助我 第一部分是编程语言的设计,第二部分是运行时细节

我创建了一种编程语言,并在我的计算机中编写。这是一种实验性的非专业编程语言,我是为了好玩而创建的

语言需要最重要的东西,编译器

将源代码转换为C/++并调用GCC是一个好主意吗

<>我的语言看起来像C++和java,没有解析器就不难转换。 我的目标不是优化任何东西,也不是为每个平台生成二进制文件。如果我生成一个C源代码,我可以为许多平台编译它并使用GCC优化

我不知道哪些工具可以帮助我,我知道一些工具的名字是yacc和llvm,但我不知道它们如何帮助我

第一部分是编程语言的设计,第二部分是运行时细节的实现。我认为解析器实现不是一件很有趣的事情


谢谢

我自己不是这个问题的专家,但是从我所知道的,“转换”你的代码到C或C++是一个很好的<坏> <强>想法,特别是当使用GCC时。 GCC设计为具有“插件”体系结构。您应该做的是为GCC编译器创建一个前端,它能够处理来自您的语言的代码,并让GCC的后端负责代码生成和优化


(我自己没有这样做,所以我不知道它将如何工作。)

为了对付Mehrdad,将您的语言转换为C是一个好主意。许多语言编译器编译成C语言,将其用作“可移植程序集”。现在,为GCC创建前端是一个好主意,但它提高了初始复杂性的标准。创建C代码比创建GCC前端要简单得多

或者,就这一点而言,把它转换成任何你喜欢的、你认为合适的目标语言,不管你喜欢什么。例如,我编写了创建Java代码的编译器

你语言中的语法部分可能不是很有趣,但它可能是你第一次遇到挫折。因此,明智的做法是关注其他语言的功能,并查看它们的语法。考虑一些简单的Pascal递归体面分析器,如果你认为你的语言可以用的话。或者寻找Yacc和ANTLR语法

大多数人一开始觉得沮丧的只是表情

a + b * ( c - sqrt(12 / 4) + sin(30))
许多人在使用表达式时遇到问题。在表达式工作之后,其余的就可以很容易地完成了(假设使用类似Algol/C的语言,而不是您正在使用的其他语法样式)。

如果您真正的目标是——记住,我的意思是,您认为在工作中会很有趣;-)-是语言设计,那么我想说,避免编写自己的完整编译器是非常好的。唯一的问题是,将您的语言编写成C(++)翻译程序是否容易得多?这可能比为gcc或LLVM编写前端更容易(尽管如果您的目标不同,这些都是严肃的方法)

我的建议是从C/C++转换器开始