编译原理 chap-2 形式语言基础

本文介绍了形式语言的基础概念,包括字母表、符号串、语言的分类和运算。此外,详细讲解了文法的定义,如四元组、推导、规约、语法树和句柄,并探讨了递归文法和二义性文法的特点。还讨论了文法的等价变换,如删除无用和ε产生式,以及如何通过文法变换消除直接左递归。

2.1 形式语言是符号串集合

字母表中的元素不能再切割

b0=ε(空符号串),b1=b,b2=bb,b3=bbb,…
L1为有限语言,L2为无限语言(字符串无限多个)

符号串的运算:

  1. 连接:a·b=ab
  2. 或:a|b=a(或者b)
  3. 方幂:b0=ε(空符号串),b1=b,b2=bb,b3=bbb,…
  4. 闭包:a的正闭包:a+=a1|a2|…|an|…
       a的星闭包:a*=a0|a1|a2|…|an|…
    例:(a|b)2=aa|ab|ba|bb

推论:若A为任一字母表,则A*就是该字母表上所有符号串(包括空串)的集合。

文法规则:

  1. S,A—定义的对象(S句子,最大的定义对象,又称为开始符号;A为aAc的短语)
  2. a,b,c—字母表中的符号
  3. ->,| —为描述符号

可以用文法生成语言(连续推导)

2.2 形式语言是由文法定义的

文法:规则的有限集,其中的上下文无关文法可定义为四元组

四元组

四元组:G(Z) = (VN , VT , Z , P)
VN :非终结符集(定义的对象集,如:变量)
VT :终结符集(字母表)
Z:开始符号(研究范畴中,最大的定义对象)
P:规则集(又称产生式集)

一个文法所定义的语言,就是由该文法开始符号推导出的所有含终结符的符号串之集合。

标识符:指字母开头的字母、数字序列

2.3 主要语法成分的定义

推导,规约,语法树,句柄

文法的两种基本运算:推导,规约

  1. 直接推导=>,一次推导
    加推导(=>上加+),至少一次推导
    星推导(=>上加*),0或0步以上步推导
  2. 直接规约(=>下加.)
    加规约(=>下加.上加+)
    星规约(=>下加.上加*)

实用中最常见的两种运算:最左推导,最左规约
最左推导:每次推导皆最左非终结符优先
最左规约:每次规约皆最左非终结符优先

  1. 句型:由文法开始符号加推导出的任一符号串
  2. 句子:由开始符号加推导出的任一终结符号串
  3. 语法树:句型(句子)产生过程的一种树结构表示

关于语法树:

  • 树根—开始符号;树叶—给定的句型(句子)
  • 其全体树叶(自左至右)恰好是给定句型
  • 子树:以任何具有分支的结点为根所形成的树
  • 简单子树:仅具有单层分支的子树

短语:任一子树的树叶全体(具有共同祖先的叶节点符号串)
简单短语:任一简单子树的树叶全体
句柄:最左边的简单短语

2.4 两种特性文法

递归文法

定义:设A∈VN,x,y∈(VN+VT)*,则若A=>xAy,称文法具有递归性
递归文法是定义无限语言的文法

特别:若A->Aa,称文法具有直接递归性
   若A->aA,称文法具有直接递归性

二义性文法

定义:文法中存在具有两棵不同语法树的句型
二义性文法会引起歧义,应尽量避免

2.5 文法的等价变换*

文法的等价性:它们所定义的语言是一样的
注:一个语言,其描述文法并不唯一

重点介绍三种文法变换:

  1. 删除无用的产生式(文法的化简)
  2. 删除ε产生式
  3. 常用的三种文法变换

Ⅰ. 文法的化简

  1. 删除A->A形式的产生式(自定己)
  2. 删除不能从其推导出终结符串的产生式(不终结)(先找终结产生式)
  3. 删除在推导中永不使用的产生式(不可用)(起始不能到非终结符构成的表达式)

2⃣️删除ε产生式

  1. 首先构造出可以推出空串的非终结符集
  2. 删除文法中的A->ε产生式
  3. 依次改写文法中的产生式A->X1X2…Xn:若有Xi∈Vε,则用(Xi|ε)替换(一个分裂为两个)

3⃣️常用的三种文法变换方法(扩展文法,引入新的描述符号)

  1. 必选项法(圆括号法):令(a|b) = a或者b(又称提取公因式法)
  2. 可选项法[方括号法]:令[a] = a或者ε(括号内可选也可不选)
  3. 重复可选项法{花括号法}:令{a} = ε或a或aa或aaa…(消除直接左递归)

2.6 形式语言的分类

  1. 0型语言(无限制文法)a->b
  2. 1型语言(上下文有关文法)xAy->xby
  3. 2型语言(上下文无关文法)A->b
  4. 3型语言(正规文法)A->aB, A->a, A->ε
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值