没有合适的资源?快使用搜索试试~ 我知道了~
首页LALR(1)类文法判定及其分析器构造
资源详情
资源评论
资源推荐

LALR(1)类文法判定及其分析器构造
摘要
LALR(1)介于规范 LR 分析器构造法和 SLR 分析器构造之
间的一种方法,LALR 文法能描述大多数常用高级程序语言的
语法结构。LALR 分析表比规范 LR 分析表小很多,当然能力差
一 点 , 它 却 能 处 理 一 些 SLR 分 析 器 难 以 处 理 的 情 况 。
LALR(1)采用对 LR(1)项目集规范族合并同心集的方法,若
合并同心集后不产生新的冲突,则为 LALR(1)项目集
关键字
规范合并同心集、 不冲突 、 项目集
Abstract
LALR (1) between norms LR analyzer construction method
and structure of SLR analyzer between a way, LALR grammar
describes most advanced programming language commonly used
in grammar structure. LALR analysis table than the standard
LR analysis of many small table, of course, nearly capacity,
it can deal with some SLR Analyzer difficult to deal with
the situation. LALR (1) use the LR (1) project set norms
Family Care-way merger, if the merger is not of one mind set
after the election of a new conflict, compared with LALR (1)
project set
KeyWords
norms merger Care Set 、Do not conflict、Itemsets
第 页

目录
摘要………………………………………………………………………
………………………………………………2
Abstract…………………………………………………………………………………………………………2
一、引言…………………………………………………………………
…………………………………………4
二、Windows 下的编程环境简介………………………………………
………………………5
三、LALR(1)文法判定及分析器构造的分析和设计…………………
…………6
(一)LALR(1)文法判定及分析器构造的分析……………………
……………6
(二)LALR(1)文法判定及分析器构造的设计……………………
……………6
1.设计方案………………………………………………………
……………………………………6
2.设计内容………………………………………………………
……………………………………7
第 页

3.设计详细步骤…………………………………………………
………………………………7
(1)构造 LR(0)的项目集规范族……………………………
…………………7
(2)构造 LR(1)的项目集规范族……………………………
…………………8
(3)构造 LALR(1)的项目集规范族…………………………
………………11
四、程序运行与测试……………………………………………………
…………………………………13
五、小结…………………………………………………………………
…………………………………………15
六、参考文献列表………………………………………………………
…………………………………16
七、附录…………………………………………………………………
…………………………………………16
一、引言
LR(0)文法限制比较严,用起来非常受限制,比如
它难于处理空产生式,因此这种方法很难承担实际程
序设计语言的语法分析工作。LR(1)方法是最好的一
第 页

种方法,但它的问题是状态用的太多,以至于有些大语
言难以在微机上实现。因此,必须给出功能较强,但状
态数不多的可行方法,这便是所介绍的 LALR(1)方法。
LALR(1)(Look Ahead _LR) 方法由 DeRemer
提出,它是介于 SLR(1)和 LR(1)之间的一种方法,具有
SLR(1)状态少的优点和 LR(1)的适用范围广的优点。
主要思想来自这样一个事实:
1)LR(1)状态机从它们所表示的自动机角度看是等价
的;
2) 自 动 机 可 通 过 合 并 等 价 状 态 来 减 少 状 态 个 数 ,
LALR(1)状态机通常采用 LR(1)状态机来定义。
因此我们接下来来了解 LALR(1)文法的判定问
题和构造的问题。
二、Windows 下的编程环境简介
硬件环境:
CPU:
AMD Athlon(tm)64*2Dual Core Processor
3800+ 2.01 GHz
第 页

内存:
1.00GB
硬盘:
希捷酷鱼 80G
显卡:
NVIDIA GeForce 7600 GT
软件环境:
操作系统:
Micorosoft Windows XP Professional 版本
2002 Service Pack 2
编程软件:
VC++ 6.0 中文版
三、LALR(1)文法判定及分析器构造的分析和设计
(一) LALR(1)文法判定及分析器构造的分析
本次课程设计要求的是 LALR(1)文法的判定及其分析器的构造,也就是说
这个题目要求我们做两件事情:第一:要写出 LALR(1)文法的判定的一些规则,
第二:要构造一个分析器,这个分析器能对输入的文法进行判定。
对于一个文法是否为 LALR(1)文法,首先构造它的 LR(1)项目集族,若没
任何冲突,则合并同心集,若仍不产生规约-规约冲突,则是 LALR(1)文法。
但是合并同心集时要注意:
1.同心集是指相同的项目集合并在一起,因此同心集合并后仍相同,只要
超前搜索符集合为各同心集超前搜索符的和集。
2. 对于合并同心集后的项目集经转换函数所达仍为同心集。
3. 若文法 LR(1)文法,合并同心集后若有冲突也只可能是归约—归约冲突,
而不是能产生移进—归约冲突。
第 页
剩余23页未读,继续阅读






安全验证
文档复制为VIP权益,开通VIP直接复制

评论0