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

7

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

我想创建一种编程语言,不一定是从今天开始,但是需要在2-3年内完成。我不是一个非常优秀的程序员,但我正在进步。我想问的是创建一种语言和编写一个编译器有多密切相关?

由于编译器会将一种语言从一种形式转换为另一种形式,所以这完全是关于为特定文本编写编译器。所以如果我学习编译器设计,我就能够编写自己的编程语言吗?

4个回答

4
你可以设计一种编程语言而不必了解有关实现编译器的任何内容,反之亦然。语言设计师可以为该语言编写规范,编译器实现者可以使用这个规范来创建编译器。
然而,如果这是一个个人项目,那么你可能需要学习如何同时完成这两个任务。如果没有编译器的编程语言纯粹是理论上的,很难通过编写和执行真正的程序来确定编程语言的好坏。即使您找到愿意为您实现编译器的人,每当您有新想法要尝试时,也可能不想等待该人,因此您需要知道如何自己实现编译器。
编写编译器是一个非常高级的编程项目,所以如果您刚开始成为程序员,你会面临陡峭的学习曲线。你可能想先查看LLVM的教程和示例,虽然这可能并不适用于你的编程语言。

2
取决于您想创建什么类型的“语言”,如果只是为了学习而创建简单的语言,并选择语法等,您不需要了解太多关于编程的知识。但是,如果您要处理一个严肃的语言,您将不得不深入研究至少一种计算机编程语言,不仅要使用它,还要尝试掌握其几个概念,例如,OO、泛型、lambda表达式等等。
相信我,这不是几个月的任务,而是一次严肃的旅程。无论如何,祝您好运 ;)

2

密切相关。如果没有将语言解释/编译成可执行形式的方法,那么你实际上并没有一种语言。


1

这取决于你所说的“编译器”的含义。编译器/解释器通常由两个主要部分组成:解析器部分,它读取你的语言中的文本并构建一个内部结构(AST),以及代码生成/解释部分,它读取AST并将其翻译为机器或字节码。虽然你肯定需要知道如何为你的语言编写解析器,但是在早期阶段,代码生成并不那么重要。你可以先将你的语言简单地翻译成C语言,然后再看你能做到什么程度。


这是我想做的事情。我买了Aho、Lam、Sethi和Ullman所著的《编译器:原理、技术和工具》。让我们看看我能做到什么程度。 - Naruto Uzumaki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接