好吧,我想这个问题已经在这里被问了很多次。
我想创建一种编程语言,不一定从今天开始,但需要超过2-3年。我不是一个非常优秀的程序员,但我正在改进。我想问的是如何创建一种语言并编写相关的编译器?
因为编译器将一种语言从一种形式翻译成另一种形式,我想这就是为特定文本编写编译器。因此,如果我学习编译器设计,我能编写自己的编程语言吗?
答案 0 :(得分:4)
您可以在不了解实现编译器的情况下设计编程语言,反之亦然。语言设计者可以编写该语言的规范,然后编译器实现者可以接受它并创建编译器。
但是,如果这是个人项目,那么您可能需要学习如何做到这两点。没有编译器的编程语言纯粹是理论上的,如果没有用它编写和执行真正的程序,很难弄清楚编程语言有多好。即使您确实找到了愿意为您实现编译器的人,您也可能不希望每次有新想法尝试时都等待那个人,所以您将想知道如何自己动手。
实现编译器是一个非常高级的编程项目,所以如果你刚刚开始作为程序员,你就会有一个陡峭的学习曲线。您可能希望从查看LLVM的教程和示例开始,尽管这可能实际上不适合您的语言。
答案 1 :(得分:2)
火影忍者,这取决于你想要创造什么样的“语言”。如果它是一种简单的,仅用于学习的语言,并且您选择语法等,那么您将不需要了解很多关于编程的知识。但是,如果你打算处理一个严肃的问题,你必须学习至少一种计算机编程语言,不仅要使用它,还要尝试达到它的几个概念,例如OO,泛型,lambda表达等等。
相信我,这不是几个月的任务,而是一次严肃的旅程。无论如何,祝你好运;)
答案 2 :(得分:2)
密切相关。你真的没有语言,除非你有办法解释/编译成可执行的形式。
答案 3 :(得分:1)
这取决于你对“编译器”的意思。编译器/解释器通常由两个大部分组成:一个解析器部分,它以您的语言读取文本并构建一个内部结构(AST),以及一个代码生成/解释部分,它读取AST并将其转换为机器或字节码。虽然你肯定需要知道如何为你的语言编写解析器,但至少在早期阶段,代码生成并不那么重要。您可以先将语言翻译成C语言,然后查看从哪里开始。