编译原理 第三章 上下文无关文法与语法分析

目录

3.1 基本概念

3.1.1 语法分析

3.1.2 文法

3.2 上下文无关文法

3.2.1 推导

3.2.2 递归

3.3 分析树与推导

3.4 语法树

3.5 二义性文法

3.6 乔姆斯基语言分类


3.1 基本概念

3.1.1 语法分析

程序设计语言的语法通常是用上下文无关文法的文法规则进行描述的

②与正则表达式最大的区别:上下文无关文法能够表达递归

③语法分析的任务:根据扫描程序产生的记号来确定程序的语法结构

④语法分析阶段的输出分析树或者语法树

3.1.2 文法

定义:文法是描述语言的语法结构的形式规则(G(S))

3.2 上下文无关文法

①终结符:产生式中没有出现在左侧的符号  

②非终结符:通常出现在产生式左侧,在语法推导中总是被替换

③开始符号:一般是文法规则中第一条产生式左侧的非终结符

3.2.1 推导

句型:如果开始符号S可经过任意步推出α,则称α是一个句型。

句子:仅含终结符的句型

语言:文法G产生的句子的全体

 

 补充:可以自己找文法例子练习写出终结符、非终结符、句子,加深理解

3.2.2 递归

①左递归:左侧非终结符出现在右侧第一个位置。
A —>   A a | a
右递归:左侧非终结符出现在右侧最后一个位置
A—>  a A | a
练习如何用上下文无关文法表示一个语言和描述一个文法产生的语言是什么

3.3 分析树与推导

一个串的推导过程可能并不是唯一的,有最左推导、最右推导和既非最左推导又非最右的推导

最左推导:是指每一步中最左的那个非终结符都要被替换的推导

最右推导:是指每一步中最右的那个非终结符都要被替换的推导

树形结构表示推导过程就可以得到串的分析树:

                a.叶子节点:终结符

                b.其他节点:非终结符

                c.:开始符号 

3.4 语法树

 语法树

        a.叶子节点是:参与运算的数

        b.其他节点:表示运算

!!!优先级仍然保留在树形结构中

3.5 二义性文法

定义:该文法允许一个串对应多个分析树,存在串对应着两个最左推导或两个最右推导

判断该文法是否是二义性文法:

          找到一个串,可以写出两种分析树

3.6 乔姆斯基语言分类

·3型语言(正则文法)

·2型语言(上下文无关文法)

·1型语言(上下文有关文法)

·0型语言(短语文法,图灵机)

包含关系,比如1型文法不能表示的语言,2型文法也不能表示。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值