编译原理 2 语言及其文法

本文深入探讨了语言及其文法的基本概念,包括字母表、串和文法的定义。重点介绍了上下文无关文法(CFG),包括其组成、产生式和分析树。通过CFG,可以理解如何用有限的规则描述无限的语言,并对文法进行了类型划分,从0型到3型,揭示了它们之间的包含关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2 语言及其文法

2.1 语言及其文法基本概念

**字母表:**是一个有穷符号集合,二进制字母表{0,1}、ASCII字符集和Unicode字符集都是字母表

**字母表上的运算:**字母表既然是集合,那么就可以在集合上进行运算

乘积/n次幂/正闭包/克林闭包

**串:**字母表的克林闭包中每个元素都称为字母表上的一个串

串上的运算:连接/幂运算(多个串相连接)

2.2 文法的定义

文法的形式化定义:G = (Vt,Vn,P, S)

Vt:终结符集合 是文法所定义的语言的基本符号,也称为token,比如句子的基本符号是单词,所以单词就构成了终结符集

Vn:非终结符集合,用来表示语法成分的符号,也称为语法变量,如<句子><名次短语><名词>…

Vt 和 Vn 统称为文法符号,并集即为文法符号集合

P:产生式集合 如 P = {<句子> -><名词短语><动词短语>},它是一种规则

S:开始符号,开始符号表示文法中最大的语法成分

符号约定

终结符:字母表中排在前面的小写字母,如a,b, c,运算符、标点符,粗体字符串,数字

非终结符:字母表中排在前面的大写字母,字母S,小写,斜体,代表程序构造的大写字母

字母表中排在后面的大写字母:(XYZ),表示文法符号,即终结符或者非终结符

排在后面的小写字母:uv…z等,表示终结符号串(包括空串)

2.3 语言的定义

推导和归约

A0 =>An,经过n步推导

归约式推导的逆过程

语言的形式化定义:由文法G的开始符号S推导出的所有句子构成的集合称为文法G生成的语言,记为L(G)。文法实际上解决了无穷语言的有穷表示问题

2.4 文法的分类

0型文法 :无限制文法/短语结构文法 -生成的语言称为0型语言

1型文法:上下文有关文法 -生成的语言称为上下文有关语言

2型文法:上下文无关文法

3型文法:又叫正则文法,又分为右线性文法和左线性文法 正则文法可以描述程序设计语言中的大多数单词

它们的关系是:逐级限制

2.5 CFG的分析树

根节点:文法的开始符号

内部节点 表示对一个产生式的应用

叶节点可以为终结符也可以是非终结符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值