编译原理 LR之规范活前缀
来源:互联网 发布:js 验证上传文件格式 编辑:程序博客网 时间:2024/06/05 10:11
在LR分析中对规范活前缀两种不同的表述与解释
第一种:
规范句型:用最右推导导出的句型。
规范前缀:若有规范句型AB,且B是终极符串或空串,则称A为规范前缀。
规范活前缀:若规范前缀A不含句柄或含一个句柄并且句柄在A的最右端,则具有形式A=aN(N为句柄),则称规范 前缀A 为规范活前缀(简称活前缀)。
规约规范活前缀:若活前缀A是含有句柄的活前缀,并且句柄在A的最右端,即具有形式A=aN(N为句柄),则称活 前缀A为规约规范活前缀(简称规约活前缀或者可归活前缀)。
以上对于LR分析中几种前缀的描述,在我看来很是让人费解,主要是对于初学者来说,以上对这三种前缀的陈述过于形式化,以至于在实际的例子分析中,难以从字面与解释结果。
比如:文法G[S]:
S----aAbB
A----c | Ac
B----d | dB
句子accbdd的规范推导是S===aAbB===aAbdB===aAbdd===accbdd
规范规约为:accbdd===aAcbdd===aAbdd===aAbdB===aAbB===S
规范句型accbdd的规范前缀是: a,ac;(答案)
规范活前缀是:ac;
但是根据上述描述这个答案很难让人理解。因此有查了其他书上对于LR分析中关于规约前缀这块的解释,找了种比较容易理解的陈述,下面陈述第二种
第二种:
该种描述不像上面那样分的很细,只定义了一个活前缀,然后将活前缀分为非归态活前缀和归态活前缀。同样可以找出LR分析中所用到的规约活前缀。
活前缀:规范句型的一个前缀,这种前缀不含句柄之后的任何符号。
归态活前缀: 活前缀的尾部正好是句柄之尾,这时可以进行规约,规约之后又成为另一句型的活前缀。
非归态活前缀:句柄尚未形成,需继续移入若干符号之后才能形成句柄。
第二种描述对于上述问题就能很好的直观解释了。
以上两种表述是我摘自不同的教材,(很明显第一种是我用的) 很明显一种侧重形式化,一种侧重直观化,不能说哪种好哪种不好,只是提醒自己以后写博文时侧重点,同时学习新东西时要学会放宽视野。
(2013.11.14)
- 编译原理 LR之规范活前缀
- 编译原理 LR文法
- 【编译原理】自下而上的语法分析之LR分析法
- 编译原理之LR(0)分析算法的c实现
- 编译原理 LR(0)项目集规范族的构造 LR(0)分析表+分析语句 详解分析+代码
- 编译原理中LR(0)项目集规范族的构造
- 编译原理中LR(0)项目集规范族的构造
- 编译原理中LR(0)项目集规范族的构造
- 编译原理与编译构造 LR文法
- LR(1)分析法 ---编译原理-----
- 编译原理LR分析法c++实现
- 编译原理手记07-LR分析法
- 编译原理-LR(0)分析法
- LR原理
- 编译原理实验——LR(0)分析法
- 编译原理课设---布尔表达式的LR翻译器
- JAVA语言实现编译原理的LR分析过程模拟
- 编译原理(九) LR(0)文法分析法-算法描述
- 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
- Compiling erro C2061 ( identifier 'STAT_CHUNK')
- 人生需要修行
- 深入浅出Node.js(二):Node.js&NPM的安装与配置
- SPI驱动之SPI设备驱动程序
- 编译原理 LR之规范活前缀
- OUI启动时的小错误PRVF-0002
- 非常全面的UITabelView学习笔记
- mips寄存器
- 【cocos2D-x学习】15.cocos2d-x 2.0 版本的 ShatteredSprite
- PowerDesigner将PDM导出生成WORD文档--温习老知识
- OCP-1Z0-053-V13.02-652题
- hadoop:在vmare中配置的多个虚拟机CentOS配置静态ip,并能ping通windows主机,使得主机与虚拟机之间的网络互通
- 删除字符串前后的空格