《编译原理》学习笔记#1——自下而上分析文法

本文介绍了编译原理中的自下而上分析方法,重点讨论了活前缀的概念以及如何构造识别文法活前缀的DFA。通过理解规范句型、句柄和活前缀,解析了LR(0)项目和分析栈的工作过程,详细阐述了LR(0)项目集规范族的构建,并解释了有效项目集与分析进程的关系。
摘要由CSDN通过智能技术生成

名词解释

规范句型 最右推导(规范推导)产生的句型
句柄 最左直接短语
活前缀 是规范句型的一个前缀,不含句柄以后的任何符号。
(tip:ε是属于任意串的前缀集合的)
LR(0)项目 加入圆点的产生式

思路解析

自下而上的文法分析,基本要满足这么几个需求,每个阶段的下一步操作是唯一的(编译原理中文法分析核心需求)、过程规范高效(很多属于都是基于这个需求的,比如句柄,活前缀,素短语等)
自下而上文法的核心工作过程之一是不断读取输入字符串到分析栈(栈内的这一部分就被成为活前缀),当活前缀末尾出现一个完整的句柄,立即进行规约,然后继续之后的工作

构造识别文法活前缀的DFA

首先根据列出所有LR(0)项目,每个项目都是一个状态,可以将他们构成一个NFA,其中圆点位置相同的状态用ε转移弧连接,方向是从产生式左到产生式右的方向。
活前缀NFA
下一步将能用ε弧转移的状态合并为大状态,合成的的大状态(项目集)的集合就被成为LR(0)项目集规范族(项目集合的集合——族)
合并大状态
有效项目
A → β 1 ⋅ β 2 A \rightarrow \beta_{1}· \beta_{2} A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值