【问题标题】:Why have language interpreters be written in the target language? [duplicate]为什么要使用目标语言编写语言解释器? [复制]
【发布时间】:2010-09-21 13:03:31
【问题描述】:

可能重复:
Bootstrapping a language

为以目标语言编写的给定语言(例如,PyPy)配备解释器的重要性是什么?

【问题讨论】:

标签: interpreter


【解决方案1】:

与其说是自己编写解释器,不如说是用高级语言而不是 C 来编写解释器。理想情况下,这样做可以更改实现的细节,并使解释器更加模块化。

对于 PyPy 的特定情况,在 (R)Python 中编写解释器和核心对象允许为目标(C、JVM、.NET、JavaScript 等)重新定位 PyPy,还允许替换诸如垃圾收集器。

【讨论】:

    【解决方案2】:

    我确信这样做有很多不同的原因。在某些情况下,这是因为你真的相信语言是最好的工具......所以用语言本身编写语言解释器或编译器可以被视为一种狗食形式。如果您真的对这个主题感兴趣,那么下面的文章是一篇关于 squeak 发展的非常精彩的读物。当前版本的 squeak 是一个用 smalltalk 编写的 smalltalk 运行时。

    http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html

    【讨论】:

    • Squeak VM 并不是真正用 Smalltalk 编写的,而是用 Slang 编写的。俚语只是带有 Smalltalk 语法的 C。
    【解决方案3】:

    另一个好处是,如果您为目标语言实现了良好的调试器和 IDE,它们也适用于您的源语言。​​

    【讨论】:

      【解决方案4】:

      这样,您可以证明目标语言是严肃的事情,因为能够使其编译某些东西就表明它是一门好语言。

      好的,C++ 和 Java 也产生编译器......所以也许这个论点只是看起来的一半。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 2010-09-06
        • 1970-01-01
        • 2015-04-26
        • 2011-03-16
        相关资源
        最近更新 更多