【问题标题】:Creating programming languages and compiler designing. Are they related?创建编程语言和编译器设计。它们有关系吗?
【发布时间】:2010-09-11 19:37:47
【问题描述】:

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

我想创建一种编程语言,不一定从今天开始,而是需要 2-3 年的时间。我不是一个很好的程序员,但我正在改进。我想问的是,创建语言和编写编译器的关系有多密切?

既然编译器将一种语言从一种形式翻译成另一种形式,我想这就是为一段特定的文本编写一个编译器。那么,如果我学习编译器设计,我是否能够编写自己的编程语言?

【问题讨论】:

    标签: programming-languages compiler-construction


    【解决方案1】:

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

    但是,如果这是一个个人项目,那么您可能必须学习如何同时做这两个项目。没有编译器的编程语言纯粹是理论上的,如果不使用它编写和执行实际程序,很难弄清楚编程语言有多好。即使您确实找到愿意为您实现编译器的人,您也可能不想每次有新想法尝试时都必须等待那个人,因此您会想知道如何自己做。

    实现编译器是一个非常高级的编程项目,因此,如果您刚开始成为一名程序员,那么您将面临陡峭的学习曲线。您可能希望从查看 LLVM 的教程和示例开始,尽管这实际上可能不是适合您的语言的编译器基础架构。

    【讨论】:

      【解决方案2】:

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

      相信我,这不是几个月的任务,而是一段严肃的旅程。不管怎样,祝你好运;)

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 这就是我想做的。我已经购买了 Aho、Lam、Sethi 和 Ullman 的 Compilers:principles、techniques 和工具。让我们看看我能走多远。
          猜你喜欢
          • 2011-06-11
          • 1970-01-01
          • 2011-02-14
          • 1970-01-01
          • 2019-03-13
          • 2010-11-18
          • 1970-01-01
          • 1970-01-01
          • 2011-02-21
          相关资源
          最近更新 更多