创建编程语言和编译器设计。它们有关系吗?

时间:2010-09-11 11:00:03

标签: programming-languages compiler-construction

好吧,我想这个问题已经在这里被问了很多次。

我想创建一种编程语言,不一定从今天开始,但需要超过2-3年。我不是一个非常优秀的程序员,但我正在改进。我想问的是如何创建一种语言并编写相关的编译器?

因为编译器将一种语言从一种形式翻译成另一种形式,我想这就是为特定文本编写编译器。因此,如果我学习编译器设计,我能编写自己的编程语言吗?

4 个答案:

答案 0 :(得分:4)

您可以在不了解实现编译器的情况下设计编程语言,反之亦然。语言设计者可以编写该语言的规范,然后编译器实现者可以接受它并创建编译器。

但是,如果这是个人项目,那么您可能需要学习如何做到这两点。没有编译器的编程语言纯粹是理论上的,如果没有用它编写和执行真正的程序,很难弄清楚编程语言有多好。即使您确实找到了愿意为您实现编译器的人,您也可能不希望每次有新想法尝试时都等待那个人,所以您将想知道如何自己动手。

实现编译器是一个非常高级的编程项目,所以如果你刚刚开始作为程序员,你就会有一个陡峭的学习曲线。您可能希望从查看LLVM的教程和示例开始,尽管这可能实际上不适合您的语言。

答案 1 :(得分:2)

火影忍者,这取决于你想要创造什么样的“语言”。如果它是一种简单的,仅用于学习的语言,并且您选择语法等,那么您将不需要了解很多关于编程的知识。但是,如果你打算处理一个严肃的问题,你必须学习至少一种计算机编程语言,不仅要使用它,还要尝试达到它的几个概念,例如OO,泛型,lambda表达等等。

相信我,这不是几个月的任务,而是一次严肃的旅程。无论如何,祝你好运;)

答案 2 :(得分:2)

密切相关。你真的没有语言,除非你有办法解释/编译成可执行的形式。

答案 3 :(得分:1)

这取决于你对“编译器”的意思。编译器/解释器通常由两个大部分组成:一个解析器部分,它以您的语言读取文本并构建一个内部结构(AST),以及一个代码生成/解释部分,它读取AST并将其转换为机器或字节码。虽然你肯定需要知道如何为你的语言编写解析器,但至少在早期阶段,代码生成并不那么重要。您可以先将语言翻译成C语言,然后查看从哪里开始。