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