代码之家  ›  专栏  ›  技术社区  ›  Rudy

解析器如何在.NET中

  •  11
  • Rudy  · 技术社区  · 17 年前

    我想了解如何在.NET中构造一个解析器来处理源文件。例如,也许我可以从学习如何解析SQL、HTML或CSS开始,然后根据结果进行操作,以便对结果进行格式化以提高可读性或类似的功能。

    我在哪里可以学会怎么做?有什么具体的书我可以参考吗?我需要了解lexer/parsers吗?

    特别是针对.NET平台,因为我很熟悉C。

    6 回复  |  直到 14 年前
        1
  •  17
  •   Noldorin    17 年前

    我亲自发现了这篇文章, Grammars and Parsing with C# 2.0 是编写lexer/parsers的一个很好的介绍,其中有一些与c相关的例子。

    我写 a brief blog post 关于它,不久前,做它赞美。好的是,它的目标是完全初学者解析理论(它提供了理论的背景和实现),并逐步采取措施。当然,如果你想继续学习这个领域更先进的想法,你将需要各种其他资源,但我认为这是一个很好的基础。

        2
  •  4
  •   andyp    17 年前

    如果您确实想学习如何编写解析器,这可能不是您的答案,但是如果您只想解析和处理解析结果,那么您应该明确地查看 Irony.net . 它是一个帮助实现语言(使用.NET)的工具包。

        3
  •  2
  •   Keith Nicholas    17 年前

    安特尔:

    这是学习语法和解析器的好方法

        4
  •  1
  •   cdiggins    14 年前

    C自2.0以来已经取得了长足进步。最近添加的表达式树和动态类型使实现编译器更有趣。

    Here is a tutorial 关于如何在codeproject.com的C 4.0中创建解释器。

        5
  •  0
  •   Nicolas Buduroi    17 年前

    更困难的是,这看起来可能有点太高级了,看看单语法分析器组合器。Lukeh的博客上有一篇很棒的博文:

    http://blogs.msdn.com/lukeh/archive/2007/08/19/monadic-parser-combinators-using-c-3-0.aspx

    一旦你掌握了基础知识,它就可以很清楚地定义解析器。

        6
  •  0
  •   Qwerty    16 年前

    我所读过的学习解析成语的最好的书是“小语言”。

    Little Languages on Amazon

    如果您能够掌握System.Text.RegularExpressions的.NET源代码,您还将看到如何构建解析器的现实实现。

    贾斯汀·罗杰斯在他的博客上发表了一些关于如何构建通用解析器的优秀文章:

    Justin's Blog

    最后,如果你想进入解析器和语法的新世界,你真的应该在读“奥斯陆”以及如何使用M和MGramar语言。在解析结果对象图并将其转换为其他可用形式时,它们将给予您很大的灵活性。

    Justin的文章可能是最容易和最简单的,可以用一个构建在.NET上的原始解析器来启动和运行。

    推荐文章