我想了解如何在.NET中构建解析器来处理源文件。例如,也许我可以从学习如何解析SQL或HTML或CSS开始,然后根据结果对其进行格式化以便于阅读或类似的事情。
我在哪里可以学习如何做到这一点?我可以参考哪些特定书籍吗?我是否需要了解词法分析器/解析器?
特别是对于.NET平台,因为我对C#很满意。
答案 0 :(得分:17)
我个人发现这篇文章Grammars and Parsing with C# 2.0,一本关于编写词法分析器/解析器的精彩介绍,以及与C#有关的例子。
不久前我写过关于它的a brief blog post,赞美它。好的一点是,它非常瞄准完整的初学者来解析理论(它给出了理论和实现的背景),并逐步解决问题。当然,如果你想继续学习该领域的更高级的想法,你将需要各种其他资源,但我认为这是一个很好的基础。
答案 1 :(得分:4)
如果您确实想学习如何编写解析器,这可能不是您的答案,但如果您只是想解析并使用解析结果,那么您应该明确地查看Irony.net。它是一个有助于实现语言的工具包(使用.NET)。
答案 2 :(得分:2)
ANTLR:)
这是学习语法和解析器的好方法
答案 3 :(得分:1)
Here is a tutorial关于如何在CodeProject.com上使用C#4.0创建解释器。
答案 4 :(得分:0)
http://blogs.msdn.com/lukeh/archive/2007/08/19/monadic-parser-combinators-using-c-3-0.aspx
一旦掌握了基础知识,就可以获得非常清晰的解析器定义。
答案 5 :(得分:0)
我读过的关于学习解析习语的最好的书是“小语言”
如果您可以使用System.Text.RegularExpressions的.NET源代码,您还将看到如何构建解析器的实际实现。
Justin Rogers在他的博客上有一些关于如何构建通用解析器的优秀文章:
最后,如果你想进入解析器和语法的新世界,你应该真正阅读'Oslo'以及如何使用语言M和MGrammar。在解析和将结果对象图转换为其他可用形式时,它们将为您提供很大的灵活性。
贾斯汀的文章可能是最简单,最简单的,可以使用在.NET上构建的原始解析器来运行。