编译原理文法

文法:起描述作用的元语言,元语言是判断句子结构是否符合规范的依据

语言:

1. 语义(Semantics):单个元素的含义

2. 语法(Syntax):各个元素之间的组合规律

3. 语用(Pragmatics):语句和使用者之间的关系


形式语言:不考虑语用,语句只以符号串能表现出来的形式来描述

语言:基本的符号串

符号:可以相互区别的元素

字母表:符号的非空有穷集合

字符串:由符号组成任何有穷序列

空字符串:ε

符号串的连接:XY是把Y字符串写在X字符串的后面

符号串的方幂:符号串自身连接n次得到的符号串

符号串的乘积:若AB={xy|x∈A且y∈B},xy是所有的字符串的集合

∑*:闭包,∑里面所有字符串所组成的集合

∑+:正闭包,∑*里面去除ε剩下的符号串所组成的集合

运算符优先级   *>连接>|

{ε}是一个语言


描述语言:

1. 有穷

        将句子逐一表示

2. 无穷

找出句子的有穷表示方法

    ①文法

    ②自动机


句型:有文法G,若S=>*x,则x是文法G的句型

句子:有文法G,若S=>*x,且x∈VT*,则x是文法G的句子


文法

G=(VN,VT,P,S)  

VN:非终结符号,不是最小单元的符号。用大写字母表示。

VT: 终结符号,元素,最小单元。用小写字母表示。

P:产生式

S:开始符号


直接推导:若v直接产生w,则v直接推到出w

L(G):由文法G的一切句子的集合

最左(最右)推导:在推导的任何一步α=>β,其中α和β是句型,都是对α中的最左(右)非终结符进行替换

规范推导:最右推导。推导出来的句型称为规范句型


文法

描述

定义(α→β)

例子(文法G[S])

0型

可以表征任何递归可枚举集,

而且任何0型语言都是递归可枚举的

α∈(VN∪VT)*,且至少要包含一个非终结符。

β属于(VN∪VT)*

 

 

1型

上下文有关文法

(CSG),产生式形式为α12→α1βα2

识别系统是线性界限自动机

|β|≥|α|,仅仅S→ε除外

S→CD  C→aCA

C→bCB  AD→aD

BD→bD  Aa→bD

Ab→bA  Ba→bB

C→ε

2型

上下文无关文法

(CFG),产生式形式为A→β。

其识别系统是不确定的下推自动机

Α∈VN,β∈(VN∪VT)*

S→AB 

A→BS|0

B→SA|1

3型

正则文法(RG)。有穷自动机。分为左线性

文法和右线性文法

 

产生式形式都为A→aB或者A→a,其中A∈VN

B属于VN,a属于

VT

S→0A|1B|0

A→0A|1B|0S

B→1B|1|0


语法树

设G=(VN,VT,P,S)为一CFG,若一棵树满足下列4个条件,则此树称作G的语法树:

1.      每个结点都有一个标记,此标记是V的一个符号

2.      根的标记是S

3.      若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定A∈VN

4.      如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,……,nk,其标记分别为A1,A2,A3……,Ak,那么A→A1A2,……Ak一定是P中的一个产生式


从左到右读出推导树的叶子标记连接成的文法符号串aabbaa,为G[S]的句型。


文法二义性:若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。将二义文法改造为无二义文法只需要规定优先顺序和结合律。

   

                             (二义文法)                                                                             (无二义文法)


句型分析:识别某一个符号串是否符合某一文法的标准,分为至上而下法和至下而上法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值