CMU 15-819O 程序分析讲义.pdfVIP

  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文档。上传文档
查看更多

讲义笔记:WHILE语言和W

HILE3ADDR表示

15-819O:程序分析

乔纳森·奥尔德里奇

jonathan.aldrich@cs.cmu.edu

第二讲

1WHILE语言

在这门课程中,我们将学习使用一种名为WHILE的简单编程语言以及各种

扩展的分析理论。WHILE语言至少与Hoare在1969年关于证明程序属性的逻

辑的论文一样古老(将在后面的讲座中讨论)。它是一种简单的命令式语

言,具有对局部变量的赋值,if语句,while循环以及简单的整数和布尔表

达式。

我们将使用以下元变量来描述几个不同的语法类别。左边的字母将被用

作表示程序的一部分的变量,而右边,我们描述变量表示的程序部分的类

型:

S语句

一个算术表达式

x,y程序变量

n数字字面量

P布尔谓词

WHILE语言的语法如下所示。语句S可以是一个赋值语句x:=a,一个

什么也不做的跳过语句(类似于C或Java中的单个分号或大括号),以及条

件为布尔谓词P的if和while语句。算术表达式a包括变量x,数字n,以及

几个算术运算符,抽象地说

1

由op一个表示。布尔表达式包括true、flse、另一个布尔表达式的否定、

a

布尔运算符op应用于其他布尔表达式,以及关系运算符op应用于算术表

br

达式。

S::=x:=a

|跳过

|S;S

12

|如果P那么S否则S

12

|当P执行S

a::=x

|n

|a1opaa2

opa::=+|−|∗|/

P::=真

|假

|非P

|P1操作bP2

|a操作a

1r2

操作b::=与|或

操作r::=|≤|=||≥

2WHILE3ADDR:分析的一种表示

我们可以直接定义WHILE的语义,当然,在学习Hoare逻辑时我们会这样做

。1然而,对于程序分析来说,WHILE的源代码定义有些不方便。即使是像

WHILE这样简单的语言也很难定义。例如,WHILE有三种不同的语法形式

——语句、算术表达式和布尔谓词——我们需要分别定义每个语法的语义

。更简单

文档评论(0)

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

三步一卡,卡的潇洒;五步一停,摆个造型。

1亿VIP精品文档

相关文档