- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
国防科大编译原理第二章节
第二章:高级语言机器语法描述;2.1 程序语言的定义-关于语言的一些概念;语言的词法规则和语法规则定义了程序的结构形式,是判断输入字符串是否构成一个形式上正确程序的依据。;2.1.2 语义
;2.2 高级语言的一般特性;2.2.2 程序结构;2.2.3 数据类型和操作;名字和标识符
名字:用来表示数据对象、函数和过程。具有一定的内涵,如代
表数据时,其涵义涉及该数据的值、类型等。又可看成是一个
抽象的存储单元的代表,如变量(int count)。
标识符:字母和数字组成,以字母开头的字符串,用来表示名字。
名字的属性包括类型和作用域,类型决定名字具有什么样的值,
值在计算机内的表示方式,以及可以对它施加的运算。作用域
规定名字的值的存在范围。
“静态”名字:通过说明语句或隐性规则约定名字的类型。
可在编译时对其合法性进行检查。(无需在运行时检查或转换)
“动态”名字:名字的类型只有在程序运行时才能确定。需在
程序运行时收集、确定其性质,并进行必要的类型转换。;二、数据结构
——相互之间存在一种或多种特定关系的数据元素的集合。
由初等数据定义复杂数据结构的常见方式有:
1.数组:一个数组是由同一类型数据组成的n维矩形结构。沿着每
一维的距离称为一个下标,数组的每个元素位置可通过每一维的
下标来确定,每个数组元素占用同样大小的存储空间,同时数组
元素由数组名连同下标值来命名,如A[1,2,3,..,x]。
确定数组:编译时已确定数组占用空间大小。
可变数组:可在运行时动态改变数组占用空间的大小。
数组的存储和数组元素的地址计算:按行或按列存储。
编译程序要(1)在见到数组说明时,记录数组的有关信息。
(2)在见到数组元素名时,正确计算数组元素的地址。;2.记录:由已知类型的数据组合起来的一种结构。
域:记录通常包括若干个分量,记录的一个分量称为记录的
一个域。不同域的数据类型可以不同,一个域占用的存储
单元数叫域的长度。
如:card:record
name:array [1..20] of char; {长度为20}
age: integer; {长度为4}
married:boolean; {长度为1}
end;
记录的存储和各个域的地址的计算:连续存放。
如:card首地址为a。则card.name的地址为a。
则card.age的地址为 a+20。则card.married的地址为a+24。;3.字符串、表格、栈、队列
一些语言支持以上某些数据类型是为了方便对特殊应用的数据
的处理。体现了该语言的特点。;二、抽象数据类型
——为了增加程序的可读性和可理解性,提高可维护性、
降低软件设计的复杂性。
抽象数据类型包括:
一个数据对象的集合。
作用于这些数据对象的抽象运算的集合。
这种类型对象的封装,即用户只能使用类型中定义的运算对
对象进行操作。
C++和java通过类class对抽象数据类型进行支持。;2.2.4 语句与控制结构;续表达式
表达式的运算顺序和结合性:
(1)表达式的计值过程遵循高级的算符先运算规则,算符的优先顺序:
乘幂
一元负
…
等值
(2)同级算符,根据算符结合性不同来计算表达式的值。
(2.1)左结合:先左后右 (2.2)右结合:先右后左
例:X*Y-Z (1) X-Y+Z (2.1)
X**Y**Z (2.2);一、语句:
功能上分为说明性语句和执行语句两大类。说明语句定义各种不同
数据类型的变量或运算(过程)。执行语句描述程序动作。
赋值句:A:=B ——把B的值送入A所代表的单元
概念:A的左值:名字A代表的存储单元地址
B的右值: 名字B的值
区分表示一个名字的两种特性。
控制语句: 控制程序的执行顺序。
无条件转移: 条件语句:
循环语句: 过程调用语句:
返回语句:
说明句:定义名字的性质:包括变量和过程说明等。 ;续语句按其语法的结构特点分,可分为:
简单句和复合句
简单句:不包含其他语句成分的基本句。如赋值、GOTO语句。
复合句:句中有句。如条件、循环语句。;概念:字母表和符号串
字母表:符号的非空有限集 例:?={a,b,c}
符号:字母表中的元素 例: a,b,c
符号串:符号的有穷序列 例:a, aa, ac, abc,..
空字/空
文档评论(0)