软考-编译原理部分

本文详细介绍了编译原理中关于文法的类型,包括0型、1型、2型和3型文法,以及如何判断一个串是否属于特定文法的句型。同时,讨论了正规式、有限自动机(NFA与DFA)的概念及相互转换,还涵盖了语法推导树和算符优先的相关内容。

1.文法

1.1终结符和非终结符

终结符: 通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。
非终结符: 不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。
判断注意:

  1. 只要存在有 S→L ,则 S 必然是个非终结符
  2. 逗号,[,],(,) 这5个都是终结符
  3. 一般书上把非终结符用大写字母 表示,而终结符用小写字母表示。

识别符号: 就是开始符。由文法产生语言句子的基本思想是:
从识别符号开始,把当前产生的符号串中的非终结符号替换为相应规则右部的符号串,直到最终全由终结符号组成。这种替换过程称为推导或产生句子的过程,每一步成为直接推导或直接产生。

例如:

有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则表示:S 为开始符,S,A,B 为非终结符,而p,q,a,b,c,d 为终结符

1.2文法的类型

0型文法(短语文法)

对应于图灵机

产生式形式:α→β

要求:箭头左边的α至少含有一个非终结符,其余不加任何限制
例如,G:

C→AaB
aA→a
B→b|Bb

1型文法(上下文有关文法)

对应于线性有界自动机

产生式形式:α→β

要求:|α|≤|β|(产生式左端的长度<=右端的长度),S→ε除外。
例如G:

C→aAB
aA→aBa
B→b|Bb

2型文法(上下文无关文法)

对应于下推自动机

产生式形式:A→β,A∈VN(终结符) ,β∈V *(VN∪VT,即可为终结符也可为非终结符)

在1型文法的基础上,左边只能有一个非终结符

说明:当以β替换A时,与A的上下文环境无关;
大部分程序设计语言近似于2型文法。

3型文法(正规文法)

对应于有限状态自动机

产生式形式:A→a,A→aB,

说明:a∈VT(终结符) , A,B∈VN(非终结符),即产生式右端的第一个符号必须为终结符

例如 G:

A→aB
B→b|bB

总结

*包含关系:0 > 1 > 2 > 3 (以’>'代替包含符,'A>B’译为A包含B)

*严格程度:3 > 2 > 1 > 0

*判断文法所属类型的顺序:3 → 2 → 1 → 0

1.3如何判断一个串是否为某个文法的句型

两种判断方法:构造推导树和直接进行推导

2.正规式

正规式与正规文法之间的转换:
在这里插入图片描述

3.有限自动机(有穷自动机)

3.1NFA与DFA的定义

DFA(确定的有限自动机)
在这里插入图片描述

NFA(不确定的有限自动机)
在这里插入图片描述
区别:第四条,DFA仅有一个初态,NFA可以有多个初态。

3.2NFA转化为DFA

子集法

3.3正规式与有限自动机之间的转换

在这里插入图片描述

4.语法推导树

在这里插入图片描述

5.算符优先

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值