Parsing 计算机科学教科书进行文本/xml/任何解析的方法
它在我的脑子里萦绕了一段时间 我对Compilers/Flex/Byson等进行了一些调查,但我从未找到一个好的参考资料详细介绍“解析堆栈”,或者如何实现一个 有人知道我可以在哪里找到好的推荐人吗 编辑:我非常感谢所有的编译器参考资料,我将列出一些书,但我主要关注的是解析本身,而不是解析后的处理。试试看Parsing 计算机科学教科书进行文本/xml/任何解析的方法,parsing,computer-science,theory,Parsing,Computer Science,Theory,它在我的脑子里萦绕了一段时间 我对Compilers/Flex/Byson等进行了一些调查,但我从未找到一个好的参考资料详细介绍“解析堆栈”,或者如何实现一个 有人知道我可以在哪里找到好的推荐人吗 编辑:我非常感谢所有的编译器参考资料,我将列出一些书,但我主要关注的是解析本身,而不是解析后的处理。试试看 编译器构造只是一个很好的例子!我最近使用它为用RTF编写的模板文件的处理语言编写了一个编译器(用PHP!)。请查看“Brinch Hansen on Pascal编译器”。。它写于1985年,但
编译器构造只是一个很好的例子!我最近使用它为用RTF编写的模板文件的处理语言编写了一个编译器(用PHP!)。请查看“Brinch Hansen on Pascal编译器”。。它写于1985年,但我去年在一门关于编译器的课程(当然是Per Brinch Hansen)中使用了它,发现它非常简洁,对编译器设计很有帮助。解析器基本上是一个有限状态机,也就是有限自动机。你应该找到一本关于计算理论的书,书中讨论了有限自动机,以及正则语言、上下文无关语言等等。这是对Dima的答案的回应,你认为这是正确的答案。虽然这是一个不错的回答,说明解析与自动机理论有关,但我觉得这里有一些误解
- 首先,有限状态自动机只能识别正则语言(例如正则表达式)。为了识别上下文无关的语言,您需要更强大的下推自动机。有关更多自动机及其与不同语言类的关系,请参见
- 其次,解析不同于识别。识别字符串只会告诉您该字符串是否使用语法生成的语言。解析器的目的是生成一个具体的语法树,该树更难,而且通常更有用
- 维基百科上的文章
- 安特尔氏
- (用于在函数式编程语言中构建解析器)
- 还有更多的异国情调
我很抱歉再次提出这个问题,我碰巧看到了两篇很好的文章,描述了,和,之间的关系。对于发现这个问题的人来说可能很有趣。FSM可以识别常规语言,但您需要PDA来识别上下文无关的语言。此外,自动机只识别语言中的字符串,而不会将其转换为语法树。事实上,您的答案更有用。