【问题标题】:Online resources for writing a parser-generator用于编写解析器生成器的在线资源
【发布时间】:2009-08-31 21:22:35
【问题描述】:

我想为教育目的编写一个解析器生成器,并且想知道是否有一些很好的在线资源或教程来解释如何编写一个。类似于 Jack Crenshaw 的“Let's Build a Compiler”。

我想为 LR(1) 语法编写解析器生成器。

我对生成 action 和 goto 表背后的理论有很好的理解,但想要一些资源来帮助我实现它。

首选语言是 C/C++、Java,尽管其他语言也可以。

谢谢。

【问题讨论】:

    标签: parsing parser-generator lr


    【解决方案1】:

    我同意其他人的观点,龙书是LR解析的好背景。

    如果您对递归下降解析器感兴趣,这个网站是一个非常有趣的学习体验,它会引导您构建一个完全独立的编译器系统,该系统可以自行编译和其他语言:

    MetaII Compiler Tutorial

    这一切都基于 Val Schorre 撰写的 10 页小技术论文:META II: A Syntax-Oriented Compiler Writing Language,来自 1964 年老实人。我学会了如何构建1970 年的编译器。当您终于了解编译器如何重新生成自身时,有一个令人兴奋的时刻......

    我在大学时代就认识网站作者,但与网站无关。

    【讨论】:

      【解决方案2】:

      如果你想走 python 路线,我会推荐以下方法。

      我发现这两种方法都非常有帮助,并且当您遇到问题时,pyparsing 的作者 Paul McGuire 非常能帮助您。 《Python 中的文本处理》一书只是一本方便的参考书,触手可及,可帮助您在尝试构建解析器时进入正确的思维框架。

      我还要指出,OO 语言更适合作为语言解析引擎,因为它具有可扩展性并且多态性是正确的方法(恕我直言)。从状态机而不是“在 xyz 末尾查找分号”的角度来看问题将证明您的解析器最终会变得更加健壮。

      希望有帮助!

      【讨论】:

        【解决方案3】:

        不是真的在线,但Dragon Book 对 LR 解析进行了相当详尽的讨论。

        【讨论】:

          【解决方案4】:

          我发现在学习编写 LR 解析器之前学习编写递归下降解析器更容易。老实说,在编写解析器多年之后,我从未发现有必要编写 LR 解析器。

          我最近在 CodeProject 上写了一个名为 Implementing Programming Language Tools in C# 4.0 的教程,它描述了递归下降解析技术。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多