我对Compilers / Flex / Byson和其他东西进行了一些调查,但是我从来没有找到一个很好的参考,详细讨论了“解析堆栈”,或者如何实现它.
有谁知道我能赶上的好参考?
编辑:我非常感谢所有的编译器参考,我将会列出一些书籍,但我主要关注的是解析本身,而不是你之后用它做什么.
解决方法 这是对Dima的答案的回应,你接受了正确的答案.虽然说解析与自动机理论有关并不是一个坏的答案,但我觉得这里存在一些误解.>首先,有限状态自动机只能识别常规语言(例如正则表达式).为了识别无上下文语言,您需要更强大的下推自动机.有关更多自动机及其与不同类别语言的关系,请参阅http://en.wikipedia.org/wiki/Automata_theory#Classes_of_automata.
>其次,解析不同于识别.识别字符串只会告诉您该字符串是否使用语法生成的语言.解析器的目的是生成一个更具有硬度且通常更有用的具体语法树.
那里有各种各样的解析方法,所以很难给你一个具体的参考资料来告诉你你需要知道的东西……一般来说,你应该理解top-down parsing和bottom-up parsing之间的区别.但这里是一个概述在您感兴趣的情况下,解析器生成器使用的一些常用技术:
>维基百科文章LR Parsing,LL Parsing,SLR Parsing,LALR Parsing,GLR Parsing
> ANTLR的LL(*) parsing
> Monadic Parsing in Haskell(用于在函数式编程语言中构建解析器)
>而且更具异国情调的Parsing Expression Grammars
编辑:
我很抱歉再次提出这个问题,我刚刚发生了两篇很好的帖子,描述了regular languages and finite automata,context-free languages and push-down automata之间的关系.对于发现这个问题的人来说,可能会很有趣.
以上是内存溢出为你收集整理的计算机科学教科书的方式做text / xml /无论解析全部内容,希望文章能够帮你解决计算机科学教科书的方式做text / xml /无论解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)