程序设计语言与编译ppt课件_4.2.2 语言的形式定义.pptxVIP

程序设计语言与编译ppt课件_4.2.2 语言的形式定义.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文档。上传文档
查看更多

第四章程序语言的设计;设?是一个字母表,

?L??*,L称为字母表?上的一个语言,

?w?L,w称为语言L的一个句子。;括号匹配串的语言

该语言是指所有的左括号和右括号相匹配的串的集合。

(),(()),()()等等都是该语言的句子。

)(,())等等不是该语言的句子。;如何产生这个语言呢?

即如何产生该语言所有句子呢?

递归方法提供了语言良好的定义方式。

;除基本句子外,其它句子按照相同的方法(可能不止一种方法)产生,

实际上,就是需要给出语言中所有句子的形成规则(语法规则),

可以使用多种方法描述形成规则。;自然语言的描述方式,采用如下的递归规则:

(1)()是该语言的最基本的句子;

(2)若S是句子,则(S)是句子;

(3)若S是句子,则SS是句子。;根据形成规则,可以

产生该语言的任意的句子;

判断某个串是否是该语言的句子——语法分析。

例如: 可以产生句子(())

而推断串(()))

不是句子。

;规则(的个数)是有限的,但可以产生无限个句子,甚至长度无限的句子,

因为规则是递归的。;BNF的描述方式

巴科斯和诺尔采用的巴科斯-诺尔范式(BNF:Backus-NaurForm)描述规则:

括号匹配串::=()

括号匹配串::=(括号匹配串)

括号匹配串::=括号匹配串括号匹配串;Chomsky采用的符号化(形式化)的描述方式,运用规则(称为产生式):

(1)S→()

(2)S→(S)

(3)S→SS

“→”代表“定义为”或者“是”,

它的左边和右边分别称为该产生式的左边和右边。

;根据产生式可以生成任意句子;

可以判断一个串是否为句子。

产生句子的过程:从S开始,反复利用产生式的右边代替产生式的左边(推导过程),最终可以产生括号匹配的句子。

;例:句子(())(()())的推导过程

S ?SS

?(S)S

?(())S

?(())(S)

?(())(SS)

?(())(()S)

?(())(()());产生式的个数是有限的,规则是递归的,所有的小括号匹配的串,都可以由产生式产生;

它们组成的集合就称为一个语言。;S称为非终结符,在推导过程中,可以被代替的符号。

(和)称为终结符,在推导过程中,不可以被代替的符号。

???是产生式系统的元符号,不属于终结符,也不属于非终结符。;偶数个0组成的串的语言。

规则的自然语言描述方式:

(1)00是该语言的基本的句子;

(2)若S是句子,则00S是句子。

形式化的描述方式:

S→00

S→00S;问题:

将产生式S→00S换成

S→0S0或S→S00或S→SS

是否还产生相同的语言?

结论:

一个语言,可以使用不同的产生式组合来产生。

;由奇数个1组成串的语言的形成规则。

;标识符(以字母开头的字母、数字的串)的产生(仅考虑小写字母)。;I→L

I→IL

I→ID

L→ a|b|c|d|e|f|g|h|I|j|k|l|m|n|o|p|q|r|s|t

u|v|w|x|y|z

D→ 0|1|2|3|4|5|6|7|8|9;上例是从标识符的形成角度思考问题。

从标识符的定义角度考虑,则?;D→0|1|2|3|4|5|6|7|8|9

不能简写为

D→0|…|9

;高级程序设计语言中的算术表达式的形成规则。;(1)单个变量是最基本的句子;

(2)若E是一个句子,则EAE是一个句子(其中A代表运算符+、-、*、/)

(3)若E是一个句子,则(E)是句子。;(1)E→i (i代表单个变量)

(2)E→EAE

(3)E→(E)

(4)A→+

(5)A→-

(6)A→*

(7)A→/;这组产生式

没有表示出运算符的优先级。;表示出运算符的优先级的产生式:

E→E+T|E-T|T

T→T*F|T/F|F

F→(E)|i

其中:E代表表达式,T代表项,F代表因子,(E)代表的是带小括号的表达式;

表示:先因子,再*、/,最后+、-

;如果使用%代表模运算(即取余数运算)、使用^代表指数运算,则有

E→E+T|E-T|T

T→T*F|T/F|T%F|A

A→F^A|F

F→(E)|i

;E→E+T|E-T|T

T→T*F|T/F|F

F→(E)|I

I→L

文档评论(0)

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

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

1亿VIP精品文档

相关文档