第二章 程序设计语言基础

程序语言概述

1,低级语言:机器语言与汇编语言

2,高级语言:贴近人的自然语言,抽象程度大大提高,需要编译成特定机器上的目标代码

3,编译程序和解释程序:用高级语言或汇编语言编写的代码称为源程序,源程序不能直接在计算机上执行。汇编语言需要汇编语言的翻译程序,高级语言需要相应的编译程序或者解释程序进行翻译。

4,程序设计语言的定义:

·语法:由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则,其中由基本字符构成的词法书写规则称为词法规则,由符号(单词)构成语法成分的规则称为语法规则。

·语义:程序语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义

·语用:表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。

·语境:理解和实现程序设计语言的环境,包括编译环境和运行环境。

5,程序设计语言的分类:

·命令式程序设计语言:基于动作的语言,计算被看作时动作的序列,有Fortran,Pascal,C语言。

·面向对象的程序设计语言:Simula提出了对象和类的概念,其他的代表有C++,Java,Smalltalk。

·函数式程序设计语言:是一类以λ-演算为基础的语言,该语言的代表是LISP,其中大量使用了递归。

·逻辑型程序设计语言:是一类以形式逻辑为基础的语言。该语言的代表是建立在关系理论和一阶谓词理论基础上的Prolog。

6,程序设计语言的基本成分

a 数据成分

·常量和变量

·全局量和局部量

·数据类型

b 运算成分

·顺序结构

·选择结构

·循环结构

c 函数

·函数定义:函数首部和函数体

·函数声明:先声明后引用

·函数调用:传值调用和引用调用


语言处理程序基础

1,汇编语言基本原理

一个程序可以有三类语句:

· 指令语句:又称为机器指令语句,汇编后能产生相应的机器码,有传送指令,算数运算指令,逻辑运算指令等。

· 伪指令语句:指示汇编程序对源程序进行汇编时完成某些工作,经汇编后不会产生机器代码,伪指令的很多操作是在源程序被汇编时完成的,指令语句必须在程序运行时。

· 宏指令语句:将多次重复使用的程序段定义为宏。每个宏都有对应的宏名。

2,汇编程序

汇编程序的功能是将汇编语言编写的源程序翻译成机器指令程序(类似于编译)。它一般至少需要两次扫描。

第一次扫描会生成一个符号表(ST)用来存放存储源程序中符号的值,其中有一个单元地址计数器(LC)用来计算表示标号的值,同样存储到ST中。另外有一个固定的机器指令表MOT1,其中记录了每条指令的记忆码和长度。

第二次扫描的任务是产生目标程序,除了使用前一次扫描产生的ST,还要使用机器指令表MOT2,这一次,可执行汇编语句被翻译成对应的二进制代码机器指令,有两个方面的工作:一是把机器指令助记符转换成二进制机器指令操作码,这可以通过查找MOT2来实现;二是求出操作数区个操作的值(用二进制表示)。

3,编译程序基本原理

功能是把用高级语言书写的源程序翻译成与之等价的目标程序。

编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。实际编译器可能会将其中某些阶段结合在一起进行处理。

· 词法分析阶段:对源程序从前到后(从左到右)逐个字符进行扫描,从中识别出一个个“单词符号”。输出的“单词”通常采用二元组的方式:单词类别和单词自身的值。

· 语法分析阶段:在词法分析的基础上,根据语法规则将单词符号序列分解成各类语法单位

· 语义分析阶段:审查程序是否存在语义错误,并收集类型信息共后面的代码生成阶段使用。语义分析的一个主要工作是进心类型分析和检查。

· 中间代码生成:中间代码是一种结构简单且含义明确的记号系统,这个阶段的工作就是根据语义分析阶段的输出生成中间代码(类似于Java的.class文件)

· 代码优化阶段:对前一段产生的中间代码进行变换或进行改造,目的是使目标代码更为高效,更加节省空间。可以在中间代码生成阶段或者目标代码生成阶段执行。

· 目标代码生成阶段:把中间代码变换成特定机器上的绝对指令代码。是编译的最后阶段。

· 符号表管理:在符号表记录各个符号的动态错误

· 出错处理:错误大致可分为动态错误和静态错误。静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误。动态错误,指程序中的逻辑错误。

4,解释程序的基本原理

解释程序是一种语言处理程序,它直接执行源程序或者中间代码而不产生目标程序,这是它和编译程序的主要区别。


文法和有限自动机

书上看的一头雾水,这里参考别人的总结https://blog.csdn.net/hongtao_6/article/details/81951166

你可能感兴趣的:(第二章 程序设计语言基础)