编译原理-第二章分析.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理-第二章分析

TJNU-COCIE-WJW 编译原理 第二章 高级语言定义和一般特征 王金伟 计算机与信息工程学院 天津师范大学 第二章 高级语言的定义和一般特征 世界上已有上千种高级语言 例如: FORTRAN:面向科学计算 COBAL:面向事务处理 PROLOG,LISP:人工智能 Ada:大型嵌入式实时处理 SNOBAL:符号处理 C++,C:通用 … 2.1 高级语言的定义 高级程序设计语言必须要有明确而确切的定义 语言的初等成分的实际含义是什么? 如何有意义的使用它们? 怎样以有意义的方式组合它们? 程序设计教材中描述的是语言成分的意义,不能作为构造编译程序的基础 一个程序语言:一个记号系统 程序语言的定义: 语法 语义 语用 有关程序设计技术和语言成分的使用方法,它使语言的基本概念和语言的外界(数学概念或计算机的对象和操作)联系起来。(如:面向对象OO中的类、对象和事物的联系) 我们重点讨论语法和语义 一、几个概念 1.字母表:一个有限的字符集 例子:C语言的字母表 (1)大小写英文字母 a ~ z, A ~ Z (2)数字 0 ~ 9 (3)特殊字符 空格 ! # % ^(上箭头) * _(下划线) + - = ~ / \ | . , : ; ? ‘ “ () [] {} 任何语言:一定字符集(字母表)上的字符串(有限序列) 2.单词符号(单词) 是语言中具有独立意义的最基本结构 一般包括:常数,标识符,基本字、算符和界符 例:0.5是一个实型常数 :=是赋值符号 3.语法单位 由单词符号构成的更大的结构 一般包括:表达式、语句、分程序({ }内的一段程序,如for的循环体, switch 后面)、函数(有返回值)、过程(一系列操作)、程序 二、语法 语法:一组规则,用这组规则可以产生合式的程序(形式上正确的程序) 例1: C语言的标识符的定义是一个词法规则 标识符是是字母(A~Z,a~z)、数字(0~9)、下划线( _ )组成的字符串,并且其第一个字符必须是字母或下划线 常数的定义… 算符的定义… C语言的表达式的定义是一个语法规则 表达式是由运算符和操作数组成的式子 语句的定义… 例2:字符串:0.5*X1+C 单词符号(单词):由词法规则所确定 常数:0.5 标识符:X1和C 算符:*、+ 语法范畴(语法单位):由语法规则所确定 表达式: 0.5*X1+C 三、语义 语义 构成程序的各个语法成分的意义 定义了单词符号和语法单位的意义 一个语言的语义: 是指这样一组规则,使用它可以定义一个程序的意义。这些规则称为语义规则 例:有些语言,语法单位形式相同,但语义规则不同 ALGOL语言和FORTRAN语言中,符号串:X+F(X)+Y 表示表达式 不同的语义规则: ALGOL:左结合计算其值 FORTRAN:交换律和结合律(左右结合) ALGOL:允许F(X)产生副作用,也就是说F(X)可以改变X或Y的值 FORTRAN:不允许F(X)产生副作用,也就是说F(X)不能改变X或Y的值 四、程序的层次结构 2.2 高级语言的一般特征 高级程序设计语言最基本的、共有的技术特征 一、高级语言的分类 强制式语言:过程式语言 命令驱动、面向语句(由一系列语句构成) 每个语句的执行引起若干存储单元的值的改变,其语法形式通常为: 语句1; 语句2; … 语句n; C、FORTRAN、Pascal、Ada等 应用式语言:函数式语言 注重程序表示的功能,而不是程序的一个个语句执行时状态的变化 程序的开发过程是从前面已有的函数出发构造出更复杂的函数,对初始数据集进行操作 直至最终的函数,算出结果 语法形式: 函数n(…函数2(函数1(数据))…) LISP、ML 基于规则的语言: 通过检查某一个条件是否被满足来决定相应的动作是否被执行 语法形式: 条件1-〉动作1 条件2-〉动作2 … 条件n-〉动作n Prolog、YACC等 面向对象的语言: 封装性:类和对象 继承性:子类 多态性:操作符或子程序名能够根据参数和结果的数据类型,引用某些函数定义中的任意一个。 Smalltalk、C++、Ada等 二、数据类型与操作 一个数据类型通常包括以下三种要素 (1)用于区别这种类型的数据对象的属性 (2)这种类型的数据对象可以具有的值 (3)可以作用于这种类型的数据对象的操作 例:unsigned int a; 属性:a是一个32位无符号整型数 值的范围:0~232-1 操作:+、-、*、/ 1、初等数据(初等数据类型)(基本类型) (1)数值型数据 整型、实型

文档评论(0)

441113422 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档