文档介绍:第二章高级语言及其语法描述
本章概述高级语言的结构和主要的共同特征,并介绍程序语言的语法描述方法。要学习和构造编译程序,理解和定义高级语言是必不可少的。
程序语言的定义
任何语言实现的基础是语言的定义。在定义方面,编译程序研制者与一般用户有所不同,他们对那些构造允许出现更感兴趣。即使一时不能看出某种构造的实际应用,或者判断实现该结构会导致严重的困难,但仍必须严格根据语言的定义实现它。
程序语言主要由语法和语义两方面定义。
第二章高级语言及其语法描述
语法:任何语言程序都可以看成是一定字符集(称为字母表)上的字符串(有限序列)。但是什么样的字符串才算是一个合适的程序呢?所谓一个语言的语法是指这样的一组规则,用它可以形成和产生一个合适的程序。这些规则一部分称为词法规则,另一部分能称为语法规则(或产生规则)。
第二章高级语言及其语法描述
注意这里提到三个概念:;。单词符号一般包括:各类型的常数、标识符、基本字、算符和界符等。(即语法单位),换言之,语法规则是语法单位的形成规则。一般程序语言的语法单位有:表达式、语句、分程序、函数、过程和程序等。
第二章高级语言及其语法描述
语义:
对于一个语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法单位的意义。这就是语义问题。
语义是指这样的一组规则,使用它可以定义一个程序的意义。
我们采用的方法为:基于属性文法的语法制导翻译方法。
第二章高级语言及其语法描述
一个程序语言的基本功能是描述数据和对数据的运算。所谓程序,从本质上来说是描述一定数据的处理过程。在现今的程序语言中,一个程序大体可以视为下面所示的层次结构
程序
子程序
或
分程序
语句
表达式
数据引用
算符
函数调用
第二章高级语言及其语法描述
自上而下看上述层次结构:顶端是程序本身,他是一个完整的执行单位。一个程序通常是由若干个子程序或分程序组成的,他们常常含有自己的数据(局部名)。子程序或分程序是由于语句组成的。而组成语句的成分是个种类型的表达式。表达式是描述数据运算的基本结构,它通常含有数据引用、算符和函数调用。
第二章高级语言及其语法描述
自下而上看上述层次结构:我们希望通过对下层成分的了解掌握上层成分,从而掌握整个程序。
在学习编译原理的过程中特别注意:程序语言的每个组成成分都有(抽象的)逻辑和计算机实现两方面的意义。当从数学上考虑每一个组成成分时,我们注重它的逻辑意义,当从计算机这个角度来看时,我们注重他在机内的表示和实现的可能性与效率。
第二章高级语言及其语法描述
高级语言的一般特性
高级语言的分类;
几种程序的典型结构;
第二章高级语言及其语法描述
FORTRAN MAIN
…
END
SUBROUTINE SUB1
…
END
…
SUBROUTINE SUBn
…
END
一. FORTRAN
一个FORTRAN 程序有一个主程序段和若干个(可以是0个)辅助程序段组成。(如右侧)
第二章高级语言及其语法描述
辅助程序段可以是子程序、函数段或数据。每程序段由一系列说明语句和执行语句组成。各程序段可以独立编辑。这对模块设计甚为方便。
一个FORTRAN 程序个程序段所定义的各种名字通常是彼此独立的。同一个标识符在不同的程序段中一般都可以代表不同的名字,即代表不同的存储单元,个程序段对它们的引用或赋值是彼此无关的。但是,mon Block)却代表同一个存储区域。因此,MON语句中的名字所代表的单元在其他程序块中也可以引用。所以说,公用区具有全局性。MON中的名字所代表的单元具有局部性。
第二章高级语言及其语法描述