程序设计语言与编译ppt课件_4.2.3 文法和语言.pptxVIP

程序设计语言与编译ppt课件_4.2.3 文法和语言.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第四章程序语言的设计;对于语言,根据语言句子的结构特点,可以定义一个产生该语言的文法。

使用文法作为语言的有穷描述,不仅可以描述出语言的结构特征,而且可以产生这个语言的所有句子。

文法是描述语言语法结构的形式规则。

通用,准确,易于理解,描述能力强

;文法G是一个四元式:

G=(VT,VN,S,P)

VT是有限字符的集合(字母表),元素称为字母或者终结符;

VN是有限字符的集合——非终结符集合,元素称为变量或者非终结符;

S∈VN,称为文法的开始符号;

P是产生式α→β的集合,其中:

; α∈(VT∪VN)+,至少包含一个非终结符;

β∈(VT∪VN)*

α→ε,称为空串产生式或者ε产生式;

第一个产生式的左边只能有一个符号,就是开始符号S;

其他产生式的左边可以是串。;α→β1

α→β2

α→βn

简化为:α→β1|β2|…|βn

其中:β1、β2、…、βn称为α的候选式

;描述文法,直接给出产生式集合即可。

例:算术表达式文法G

E→E+T|E-T|T

T→T*F|T/F|F

F→(E)|i

;根据产生式的不同特征,分为以下几类:

(1)0型文法(无限制文法PSG)

α→β

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

|α|=|β|(S→ε例外);1型文法产生式的标准形式

yAz→yωz

其中:A∈VN

y,z∈(VT∪VN)*

ω∈(VT∪VN)+

S→ε例外;(3)2型文法(上下文无关文法CFG)

A→β

(4)3型文法(正则文法RG,或右线性文法RLG)

A→u或A→wB

其中u?VT*,w?VT+

;文法G

α和β是集合(VT∪VN)上的串,

α=pvr,β=pur(p和r可能同时为ε)

而v→u是一个产生式,

则称α直接推导出β,

记为α?β,即pvr?pur;推导的实质:

推导是用产生式的右边替换产生式的左边。

推导的逆过程——规约:

归约是用产生式的左端替换产生式的右端,是推导的逆过程。

非终结符代表在推导的过程中可以被替代的符号,

终结符代表在推导的过程中不可以被替代的符号。;?;?;已知G(E)

E→E+E│E*E│(E)│i

i+i*i的最左推导:

最右推导(规范推导):

E?E+E?E+E*E?E+E*i?E+i*i?i+i*i

E?E*E?E*i?E+E*i?E+i*i?i+i*i

;?;?;一个文法只能产生一个语言。

一个语言可以由多个不同的文法产生。

文???等价

两个文法G和G’

如果有L(G)=L(G’),则称G和G’等价。

;文法:

S→()

S→(S)

S→SS

产生语言:

L={ω|ω是括号匹配的串}

;文法:

S→0S

S→0

产生语言:

L={0n|n0};文法:

S→0S

S→ε

该文法产生语言:

L={0n|n≥0}

;文法:

S→aSb

S→ab

产生语言:

L={anbn|n0};文法:

S→aS

S→bS

S→ε

产生语言

L={a,b}*;字母表{a,b}上所有对称的非空串组成的语言(没有中心点)

构造文法产生该语言;aa和bb是最基本的句子。

如果S是句子,则aSa和bSb是句子

得到文法:

S→aa

S→bb

S→aSa

S→bSb;(1)文法

S→aSa

S→bSb

S→a

S→b

产生的语言是什么?;(2)文法

S→aSa

S→bSb

S→ε

产生的语言是什么?;产生语言L(G)={anbncn|n0}的文法:

S→aSBC

S→aBC

CB→BC

aB→ab

bB→bb

bC→bc

cC→cc;上述文法的后3个产生式

bB→bb

bC→bc

cC→cc

是否可以改为

B→b

C→c?;S→abc|aSBc

cB→Bc

aB→ab

bB→bb;补充文法G,使得L(G)={anbncn|n0}

S→aBSc

S→aBc

Ba→?

…;对一个句子/句型的推导过程不止一种,可以用一棵树来表示多种不同的推导,称为语法树(也称为推导树)。语法树可以表示一个句子/句型的语法结构的层次。

语法树是一棵倒置的树,结点是文法G的非终结符或终结符;根结点是文法的开始符;每个结点与其子结点都符合某个产生式的关系。

语法树的边缘:语法树的所有叶结点从左到右的连接。;对于文法

E→E+E│E*E│(E)│i

句子i+i*i的语法树为:

;句型/句子:语法树的边缘。

短语

文档评论(0)

Kaiser + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档