1. LR分析
- LR分析是干什么用的?简单来说就是你在编程时编译器用来判断你输入的符号串是否合法以及时哪一种类型。官方的说法时LR分析是一种能根据当前分析栈中的符号串和向右顺序查看输入串的k个符号就能唯一确定分析器的动作是移进还是归约和使用哪一个产生式规约。现在学习编译原理一个月了,到现在所学的内容只感到正则文法判别、自上向下分析、自下向上分析、有限自动机这几个主题有点用,但这些也是在设计编程语言的初始阶段,还有很多的内容需要学习。
2. LR组成部分
- 总控程序:名字高达上,其实就是流程判别的实现代码
- 分析表:这个最为重要,后面就是讲如何构建分析表。
- 分析栈:分析栈包括符号栈和状态栈,很简单,属于数据结构的内容。
3:LR(0)项目集规范族的构建
- 项目集规范族的构造方式有三种,这里采用第三种方式:把拓广文法的第一个项目{S’->*S}作为初态集的核,通过求核的闭包和转换函数,求出LR(0)项目集规范族,在由转换函数建立状态之间的连接关系。哇!好多陌生的词?什么叫拓广文法?什么叫核?…其实都很简单,看一个例子就能全部明白,不要被专业名词吓倒。
利用