Parsing 了解有关解析的更多信息
我从1999年开始为工作和娱乐编程。我想学习新东西,最近我一直专注于解析,因为我的大部分工作是阅读、整合和分析数据。我还有大量重复的任务,如果开销足够低,我想我可以用非常简单的领域特定语言来表达。关于这个问题,我有几个问题Parsing 了解有关解析的更多信息,parsing,dsl,Parsing,Dsl,我从1999年开始为工作和娱乐编程。我想学习新东西,最近我一直专注于解析,因为我的大部分工作是阅读、整合和分析数据。我还有大量重复的任务,如果开销足够低,我想我可以用非常简单的领域特定语言来表达。关于这个问题,我有几个问题 我目前的大多数解析代码都没有定义形式语法。我通常用我选择的语言把一些东西拼凑在一起,因为这很简单,我知道怎么做,而且我可以很快地编写代码。与我一起工作的其他人也很容易维护它。与大多数程序员用来编写解析器的黑客相比,定义语法并生成真正的解析器(就像使用or一样)来解析东西有哪些
是一个关于如何编写简单编译器的分步教程。代码是用Delphi(Pascal)编写的,但它足够基本,可以轻松地翻译成大多数其他语言。在perl中,Parse::RecDescent模块是第一个开始的地方。将教程添加到模块名称中,谷歌应该能够找到大量教程,帮助您入门。以下是我对您(非常好)问题的看法:
GoF解释器模式是编写“小语言”的另一种技术。看看这一点。在1.上,我想说的主要优点是可维护性——对语言做一点小小的更改只意味着对语法做一个相应的小更改,而不是对代码中可能与您想要更改的内容有关的各个点进行细微的修改。。。数量级—生产效率更高,bug风险更小
二号。第三,除了你已经发现的,我没什么好建议的(我主要使用Python和
对于C++,我也会建议Lex/YACC。对于Ruby来说,这看起来是个不错的选择: < P>有趣的时序:我花了很多时间早上想了解状态机和解析器,并试图找出我如何能够更多地了解它们。
2,你可以看一下(这对C++和露比很有好处)。
< P>我会认真研究基于单子的组合式句法分析(通常也涉及词法分析)。在Haskell中,我发现它非常令人大开眼界;令人惊讶的是,使用此方法可以轻松地从头开始构建解析器。事实上,编写自己的解析器通常比尝试使用现有库更快 最著名的例子可能是其中有一个很好的例子来解释如何使用它。上列出了该库到其他语言(包括和)的端口列表,尽管我对它们不熟悉,因此我不能说它们离在Haskell中使用Parsec有多近如果您想了解这些函数如何在内部工作以及如何编写自己的函数,我建议您从Graham Hutton的第8章(“函数解析器”)开始。一旦您理解了这一章(可能需要阅读几篇),您就可以开始了。这是一个关于独立函数的教程(10页!),完全可移植的编译器 可用于快速设计和实现“低开销”DSL: 本网站将带您浏览Val Schorre 1964年关于MetaII的论文。 是的,1964年。这太神奇了。这就是我学习编译器的方式
回到1970年。有趣的是,我本来打算推荐完全相同的东西,但记不起它叫什么了。+1我忘了在问题中提到我昨晚花了一个晚上在一台机器上读你的心思。:)谢谢你的建议,我一定会看的!