【问题标题】:How to start building a programming language in C? [closed]如何开始用 C 构建编程语言? [关闭]
【发布时间】:2013-01-09 16:08:56
【问题描述】:

我真的很想体验一下使用 C 构建编译器、词法分析器等的经验,但是我还没有找到关于创建一个的单一资源。我已经阅读了有关使用 Ruby 创建自己的语言的书,但它只是讨论了 C 是最佳选择,而不会告诉您从那里去哪里

他们有什么好的资源来使用 C 构建语言吗?我不在乎它有多长,我只想知道如何构建一个。

【问题讨论】:

  • 任何数量的关于编译器的介绍性书籍都会引导您完成整个过程。它可能不在 C 中,但所有概念都可以翻译成任何语言。
  • 还可以查看有关 lex 和 yacc(或 flex 和 bison)的资源。 C 是这些工具的母语,它们将完成解析部分。在那之后(最迟),您将需要已经提到的一本书。
  • 我相信我以前听说过龙之书,但我早就忘记了。我一定会在 Safari Books 上查看它。 :-)
  • @Chris 如果你使用像 lex 和 yacc 这样的工具,你真的会错过编写完整编译器的体验。我建议第一次从头开始。

标签: c compiler-construction programming-languages


【解决方案1】:

编译器/解释器的优点之一是它们用什么语言编写并不重要。在最后阶段,它们将只是某人机器上的可执行文件。

在编写我的编译器(我目前正在做的事情)时说过,我使用了几本非常有帮助的书:

  1. Compiler Construction by Niklaus Wirth
  2. Compilers Principles, Techniques, and Tools Jeffrey Ullman、Alfred Aho、Ravi Sethi

Wirth 书将引导您完成为 Oberon-0 语言创建编译器的所有阶段。它还包含他完成的编译器的完整源代码,因此您可以在自己的机器上使用它。编译器本身是用 Pascal 编写的(Wirth 创建的其他东西)。

Dragon Book 在 C 语言中提供了非常好的信息和示例!这可能是您正在寻找的,但正如我上面所说,您编写编译器所用的语言并不是那么重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 2012-11-20
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2013-04-23
    相关资源
    最近更新 更多