文法去除空产生式_[编译原理]-----第四章 语法分析

本文介绍了编译原理中的语法分析,重点讲解了如何消除文法的直接和间接左递归,以及提取左公因式。还探讨了LL1文法,包括预测分析法的工作过程,FIRST集、FOLLOW集和SELECT集的计算,以及预测分析表的构建。此外,提到了自底向上的分析方法如移入-归约分析和LR分析法的基本原理。
摘要由CSDN通过智能技术生成

1. 自顶向下分析概述

​ 从分析树的根节点向叶节点方向构造分析树,可以看做是从文法开始符号推导出词串的过程

(1). 最左推导

​ 在最左推导中,总是选择每个句型的最左侧非终结符进行替换.

(2). 递归向下分析

​ 计算机程序实现的自顶向下分析的通用形式.

​ 每层递归对应一个非终结符(相当于遍历一个树的子节点,非终结符对应的是非叶子节点)

​ 搭配回溯使用

2. 文法转换

(1). 消除直接左递归

​ 当同一个非终结符的多个候选式存在相同的前缀时,会导致回溯(最终只会匹配其中一个)

​ 将含有 A->Aα 形式产生式的文法称为是直接左递归的.使用最左推导的递归向下分析可能会无限递归.

A -> Aα | β ===> A -> βA' 其中 A' -> αA' | ε

​ 因为是左递归,所以都是A->βααααααα......这样的,那么把第一个β抽取出来,再新建立一个A'->αααααα....就可以替换左递归.其中后面新建立的这个式子是右递归的.

(2). 消除间接左递归

​ S -> Aa | b

​ A -> Ac | Sd | ε

​ 这里的递归是间接存在于两条文法中的.

​ 将两个式子代入,编程直接左递归,然后消除直接左递归

[图片上传失败...(image-8e7d85-1582632405566)]

454fc8d3a35e

1573666379351

(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值