编译原理第二章总结

1.字母表:一个有限的字符集

例子:C语言的字母表

(1)大小写英文字母

a ~ zA ~ Z

(2)数字

0 ~ 9

(3) 特殊字符

2. 单词符号:是语言中具有独立意义的最基本结构

3. 语法单位:由单词符号构成的更大的结构

一般包括: 表达式 语句 分程序(语句块)函数(有返回值)

语义是指这样的一组规则,使用它可以定义一个程序的意义。

名字和标识符:

标识符:以字母开头后跟字母数字组成字符串

例 PInm1

名字:当给标识符一定意义时,该标识符成为名字

例 PI :π(圆周率)

(变量名,函数名,类名,常量名,对象名等)

名字的属性

属性:

类型:以什么方式存放、大小、运算操作

作用域:全局变量,局部变量,静态函数

字母表:由若干元素组成的有限非空集合,用∑表示,它的每个元素称为一个符号。

符号串: ∑中的符号所构成的有穷序列。

空字:不包含符号的序列称为空字,记为ε。

*表示∑上的所有符号串的全体,空字也包括在其中。如:

  ={a,b},则∑*=?

  ∑*={ε,a,b,aa,ab,bb,aaa,}

  Φ表示不含人何元素的空集{}

特别地:xº=ε

*的子集UV中的(连接)积定义为:

         UV={αβ∣α∈U & β∈V }

 

V的闭包:

  令: V*  = V0V1V2È…

    V*V的闭包。

V的正则包(正闭包,正则闭包):

V+ = VV*, V+V的正则包,即V+ =V1V2V3È…。

 

文法是描述语言的语法结构的形式规则(即语法规则)

上下文无关文法的特点

它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。

特点:独立性

缺点:不能用来描述自然语言

一个上下文无关文法G包括四个组成部分:一组终结符号,一组非终结符,一个开始符号,以及一组产生式。

 

终结符号:乃是组成语言的基本符号,即在程序语言中以前屡次提到的单词符号,如基本字,标识符,常数,算符和界符等.

非终结符号(也称语法变量):用来代表语法范畴。如“算术表达式”“布尔表达式”“过程”等。

一个非终结符代表一个一定的语法概念。因此非终结符是一个类(或集合)记号,而不是个体记号。

如:{ETF}

开始符号:是一个特殊的非终结符号,它代表所定义的语言中我们最感兴趣的语法范畴。

例:P(代表一个程序)

产生式(也称为产生规则或简称规则):是定义语法范畴的一种书写规则。

一个产生式的形式是  A→ α

其中箭头左边的A是一个非终结符,称为产生式的左部符号;

箭头右边的α是终结符号或与非终结符号组成的一符号串,称为产生式的右部,或称候选式。

可能用多个产生式对一个非终结符进行定义

Ei              E→E+E

→E*E      E→(E)

或者:

Ei|E+E|E →E*E|E→(E)

 

直接推导:仅当A→àγ是一个产生式,有

αAβ →αγβ

该推导称为直接推导(直接导出)

文法G所产生的句子的全体是一个语言,将它记为L(G).

     L(G)={α|S =>α&α∈VT }

 

考虑一个文法G1:

      SbA

      AaA|a 它定义了一个什么语言呢?

从开始符S出发,我们可以推出如下句子:

   S ⇒bA ⇒ba

   S ⇒bA ⇒baA ⇒baa

   S ⇒bA ⇒baA ⇒… ⇒baaa

可以写为:L(G1)={ba|n1}

 

2.5 构造一个文法G3使

        L(G3)={anbn|n0}

    

;  SaSb|ε

 

2.6:  已知语言L={anbbn| n 1}, 写出产生L的文法。

[]

       G[S]:     S aAb

               A aAb|b

2.7:试构造生成语言L={anbnci|n³0, i ³1}的文法

    解:G(Z):    ZAB

                A aAb|εe

                B cB|c

 

2.8:试构造文法,该文法可以生成所有不能以0开头的偶数

G(E): E®SA|SB

S->+|-|ε

A->2|4|6|8

C->A|1|3|5|7|9

D->0|C

G->0|A

B->CFG

F->DF|D|ε

 课后作业:


 

 心得体会:

   第二章的难点在于文法和语言的相互推倒转换,再有就是定义性的东西太多,初次接触有点类似于大二学习的离散数学的部分内容,比如集合的闭包、正则闭包、字符串集合的并交乘积等。甚至还有一部分类似于数据结构的二叉树,比如求一个语法树。总体来说难度不是太高,我个人理解重点在于掌握语言文法的推倒,多读多理解定义性的知识。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值