一、程序语言基础知识
1. 本节主要考点
- 主要考点:1)编译程序和解释程序;2)程序语言的数据成分和控制成分;3)编译程序的过程;4)中缀、前缀与后缀表达式
2. 程序语言概述
1)低级语言和高级语言
- 低级语言:包括机器语言和汇编语言,面向机器的语言,格式取决于计算机指令。特点:难以理解、可读性差、程序设计效率低
- 高级语言:如Java、C、Python等,面向应用的语言。特点:接近人类语言、便于理解、提高程序设计效率,但需要翻译才能被计算机识别
2)汇编、解释、编译
- 汇编语言处理:需要汇编程序翻译成目标程序后执行
- 高级语言处理:需要解释程序或编译程序进行翻译后运行
- 核心区别:高级语言不能直接被机器识别,必须转换为机器可理解的形式
3)编绎程序和解释程序
- 解释程序:
- 工作方式:直接解释执行源程序或翻译成中间代码后执行
- 执行特点:按语句顺序逐条翻译并立即执行(边解释边执行)
- 示例:100行代码会翻译一条执行一条
- 编译程序:
- 工作方式:将源程序翻译成目标程序后再执行
- 执行特点:分为编译阶段(翻译)和运行阶段(执行)
- 示例:100行代码会全部翻译后再一次性执行
4)编绎和解释的区别
- 编译方式:
- 执行过程:运行的是目标程序,源程序和编译程序不再参与执行
- 特点概括:"一次编译,多次执行"
- 解释方式:
- 执行过程:解释程序和源程序全程参与运行,控制权在解释程序
- 特点概括:不生成独立目标程序,边翻译边执行
5)编绎和解释的比较
- 效率比较:
- 编译优势:可能取得更高效率(一次编译多次执行)
- 解释劣势:重复执行需要重复解释(执行10次需解释10次)
- 灵活性:
- 解释优势:比编译方式更灵活
- 可移植性:解释方式可移植性更好
- 应用实例:
- 编译语言:Java、C等高级语言通常采用编译方式
- 解释语言:嵌入式JavaScript等要求可移植性的语言采用解释方式
3. 程序语言的数据成分
1)常量和变量
- 定义: 按照程序运行时数据的值能否改变,将数据分为常量和变量。
- 常量: 值固定,不能改变,如1、2、3、π。
- 变量: 值可以改变,如a=1后,a的值可以变为2。
2)全局变量和局部变量
- 全局变量: 作用域范围为整个程序,存储空间在程序运行过程中一般不改变。
- 局部变量: 作用域范围仅限于某个函数内部,存储单元可以动态改变。
3)数据类型
- 基本类型: 整型、字符型、实型、布尔类型。
- 特殊类型: 空类型。
- 用户定义类型: 枚举类型。
- 构造类型: 数组、结构、联合。
- 指针类型:type *。
- 抽象数据类型: 类类型。
4. 程序语言的控制成分
1)顺序结构
- 定义: 计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到序列的最后一个操作。
- 示例: 如a=1, b=2, c=a+b,程序从上往下依次执行。
2)选择结构
- 定义: 提供了在两种或多种分支中选择其中一个的逻辑。
- 示例: 如if-else语句,根据条件选择执行不同的分支。
3)循环结构
- 定义: 描述了重复计算的过程,通常由三部分组成:初始化、循环体和循环条件。
- 组成: 初始化部分设置循环的初始状态,循环体包含重复执行的代码,循环条件决定循环是否继续。
- 示例: 如do-while语句,满足条件时循环执行代码块。
5. 编译过程
1)词法分析
- 任务: 对源程序从前到后(从左到右)逐个字符地扫描,识别出一个个"单词"符号。
- 单词符号: 程序设计语言的基本语法单位,如关键字、标识符、常数、运算符和标点符号等。
- 举例: 在int a, b, c;中,int、a、,、b等都是单词符号。
2)语法分析
- 任务: 根据语言的语法规则,分析单词串是否构成合法的表达式、语句和程序等基本语言结构,同时检查和处理语法错误。
- 结果: 如果源程序没有语法错误,语法分析后能正确构造出语法树。
- 举例: c = a + b;是一个合法的语句,但c = AB +;则不是。
3)语义分析
- 任务: 分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供代码生成阶段使用。
- 主要工作: 进行类型分析和检查。
- 举例: 整除取余运算符只能对整型数据进行运算,若运算对象为浮点数,则为类型不匹配错误;除数不能为零,否则在语义分析阶段可检查出来。
4)中间代码生成
- 任务: 根据语义分析的输出生成中间代码。
- 常用中间代码: 后缀式(逆波兰式)、四元式(三地址码)、树形表示。
5)代码优化
- 原因: 编译器将源程序翻译成中间代码的过程是机械的,效率较差,需进行优化以生成高效的目标代码。
- 优化时机: 可在中间代码生成阶段或目标代码生成阶段进行。
6)目标代码生成
- 任务: 把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码和汇编指令代码。
- 特点: 此阶段工作与具体机器密切相关。
7)符号表管理
- 作用: 记录源程序中各种符号的必要信息,辅助语义的正确性检查和代码生成。
- 操作: 需对符号表进行快速有效的查找、插入、修改和删除等操作。
- 举例: 符号表可能记录变量名、变量类型和变量值等信息,如变量a的类型为整型,值为1。
8)出错处理
- 错误分类: 静态错误和动态错误。
- 动态错误: 发生在程序运行时,如变量取零时作除数、引用数组下标错误等。
- 静态错误: 编译阶段发现的程序错误,分为语法错误和静态语义错误。
- 语法错误: 单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等。
- 静态语义错误: 语义分析时发现的运算符和运算对象类型不合法等错误。
6. 中缀、前缀与后缀表达式
1)中缀、前缀与后缀表达式的定义
- 中缀表达式: 是我们通常所使用的表达式,运算符位于操作数中间,如( a + b ) * c - d。
- 前缀表达式(波兰式): 运算符位于操作数前面,不使用括号,如 -*+abcd。
- 后缀表达式(逆波兰式): 运算符位于操作数后面,不使用括号,如a b + c ^ { 2 } d -。
2)三种表达式之间的转换
- 中缀表达式转前缀表达式
- 步骤:
- 加括号: 按计算顺序给中缀表达式全部加上括号,如( ( a + b ) * c - d )。
- 移运算符: 把每一对括号内的运算符移到括号前面,如-(*(+(ab)c)d)。
- 去括号: 去掉所有括号,得到前缀表达式,如 -*+abcd。
- 步骤:
- 中缀表达式转后缀表达式
- 步骤:
- 加括号: 按计算顺序给中缀表达式全部加上括号,如( ( a + b ) * c - d )。
- 移运算符: 把每一对括号内的运算符移到括号后面,如((ab)+c)*d)-。
- 去括号: 去掉所有括号,得到后缀表达式,如ab+c*d-。
- 步骤:
7. 传值调用和引用调用
1)传值调用
- 定义: 信息传递是单向的,只能将实参的值传递给形参,形参不能再将值传递给实参。
- 实参类型: 可以是常量(表达式),也可以是变量(数组元素)。
- 举例:
- 在此例中,2和3是实参,x和y是形参,形参接收实参的值,但形参的值不能传回给实参。
2)引用调用
- 定义: 形参名实际上是实参的别名,被调函数中对形参的访问和修改实际上就是对实参的访问和修改,实现双向传递。
- 参数类型: 只能是变量(数组元素),不能是常量(表达式)。
- 举例:
- 在此例中,a和b是实参,调用swap函数后,a和b的值会被交换,因为传的是地址,形参和实参实际上是同一个变量的两个别名。
二、知识小结
|-------------|--------------------------------------------------------------------------|-------------------------------------------|------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 程序语言分类 | 低级语言(机器指令)与高级语言(如JAVA/C)的区别:可读性、执行效率、转换方式(汇编/解释/编译) | 低级语言直接面向机器,高级语言需转换;编译与解释执行机制差异 | ⭐⭐ |
| 编译与解释程序 | - 编译:一次性翻译为目标程序,多次执行(高效) - 解释:逐条翻译并立即执行(灵活,可移植性好) | 编译不参与运行时,解释需全程参与;JavaScript常用解释,C/JAVA用编译 | ⭐⭐⭐ |
| 程序语言数据成分 | - 常量/变量作用域(全局/局部) - 数据类型:基本类型(整型/布尔)、构造类型(数组/结构体)、抽象类型(类) | 局部变量存储动态分配;类型不匹配错误(如整型运算浮点数) | ⭐⭐ |
| 程序控制结构 | 顺序结构(依次执行)、选择结构(if-else)、循环结构(while/do-while) | 循环三要素:初始化、循环体、循环条件 | ⭐ |
| 编译过程六个阶段 | 1. 词法分析(识别单词) 2. 语法分析(检查句子合法性) 3. 语义分析(类型检查) 4. 中间代码生成 5. 代码优化 6. 目标代码生成 | 前端(1-4)与语言相关,后端(5-6)与机器相关;符号表管理贯穿全程 | ⭐⭐⭐⭐ |
| 中缀/前缀/后缀表达式 | - 中缀:运算符居中(a+b) - 前缀:运算符在前(+ab) - 后缀:运算符在后(ab+) 转换方法:加括号→移动运算符→去括号 | 2018年考过转换题;优先级括号是关键 | ⭐⭐⭐ |
| 参数传递方式 | - 传值调用:单向传递(实参→形参) - 引用调用:双向传递(传地址,形参为实参别名) | 常量只能传值,变量可传引用;近年未考但需区分机制 | ⭐⭐ |
| 教材重点章节 | - 必读:42-52页(语言概述/数据控制成分) - 重点:54-58页(编译原理) - 跳过:文法形式描述(54页后)、汇编程序原理 | 近年考题偏教材原话,随机摘抄填空 | ⭐⭐ |
三、真题练习
1. 例题:算术表达式后缀式
- 转换方法:
- 第一步:按运算优先级添加括号,如(x−((y+c)∗8))
- 第二步:将运算符移到对应括号外,如((yc+)8∗)
- 第三步:去掉所有括号得到后缀式xyc+8∗−
- 解题技巧:
- 运算符优先级:括号>乘除>加减
- 结合性遵循从左到右原则
- 答案:D选项xyc+8∗−
2. 例题:解释程序和编译程序
- 核心区别:
- 编译程序:生成源程序的目标程序,执行时直接运行目标程序
- 解释程序:不生成目标程序,逐行解释执行
- 典型特征:
- 编译型语言执行效率更高
- 解释型语言具有更好的跨平台性
- 答案:C选项(仅编译程序生成目标程序)
3. 例题:传值调用与引用调用
- 传值调用:
- 数据流向:仅实参→形参单向传递
- 参数类型:允许变量、常量、表达式
- 内存操作:创建形参副本
- 引用调用:
- 数据流向:形参与实参双向传递
- 参数限制:必须为变量(不可为常量/表达式)
- 实现原理:传递内存地址
- 答案:C选项(②③正确)
4. 例题:编译过程变量存储单元地址
- 地址类型:
- 逻辑地址:编译阶段分配的地址空间
- 物理地址:运行时实际内存地址
- 转换时机:程序运行时由系统完成转换
- 答案:A选项(逻辑地址)
5. 例题:动态网页处理程序设计语言
- 语言特性:
- PHP:专为Web开发设计,支持服务器端脚本
- HTML:静态页面标记语言
- LISP:函数式编程语言
- JAVA/C++:通用编程语言
- 选择依据:动态网页需要服务器端处理能力
- 答案:C选项(PHP)
6. 例题:引用调用方式定义
- 本质特征:传递实参的内存地址
- 实现效果:形参修改直接影响实参
- 对比记忆:与传值调用形成鲜明对比
- 答案:B选项(传递地址)
7. 例题:编译过程符号表
- 符号表功能:
- 记录标识符的类型信息
- 存储变量的特征属性
- 支持编译各阶段查询
- 典型内容:变量名、数据类型、作用域等
- 答案:A选项(符号表)
8. 例题:程序设计语言叙述判断
- 正确叙述:
- 基本成分包含数据、运算、控制和传输(A)
- 高级语言不依赖具体硬件(B)
- 常量值运行时不可变(D)
- 错误叙述:
- 局部变量值运行时不可变(C错误)
- 易错点:混淆常量与变量的可变性
- 答案:C选项(错误选项)
9. 例题:语法树
- 题目解析
- 考查表达式(a+(b−c))×d的语法树表示
- 运算优先级分析:
- 先计算括号内b−c
- 再计算a+(b−c)
- 最后进行乘法运算×d
- 选项分析:
- A选项错误:表示(a+b)×(c−d)
- B选项正确:符合运算优先级顺序
- C选项错误:表示(a−(b+c))×d
- 答案: B
- 考点: 语法树的构建需要严格遵循运算符优先级规则
10. 例题:全局变量存储空间
- 题目解析
- 存储区域分类:
- 代码区
- 静态数据区
- 动态数据区(包含栈区和堆区)
- 全局变量特性:
- 存储空间在程序运行过程中一般不变
- 分配在静态数据区
- 局部变量特性:
- 存储单元可动态改变
- 分配在动态数据区(栈区或堆区)
- 答案: B(静态数据区)
- 参考依据: 教材47页关于全局变量和局部变量的存储分配说明
- 记忆点: "静态数据存全局,动态数据存局部"
- 存储区域分类:
11. 例题:高级程序设计语言实现
1)编译与解释的区别
- 编译程序特点:将高级语言源程序编译成目标程序后,用户程序运行时只需运行目标程序,源程序和编译程序都不再参与运行控制。
- 解释程序特点:直接解释执行源程序,解释程序需要全程参与用户程序的运行控制。
2)例题解析
- 题目解析
- 选项分析
- A选项:正确,符合编译和解释的基本区别
- B选项:错误,教材未限定解释程序只能用汇编语言编写
- C选项:错误,教材未说明编译方式不进行优化
- D选项:错误,未在讲解中提及相关内容
- 答案:A
- 解题技巧:使用排除法,优先选择明确学过的知识点作为正确答案
- 选项分析
12. 例题:脚本语言
1)脚本语言特性
- 通用性:脚本语言(如JavaScript)不是通用的程序设计语言,通用程序设计语言包括C、Java、C++等。
- 应用场景:不适合用于系统级程序开发,主要用于实现网页动态效果等轻量级应用。
- 实现方式:主要采用解释方式实现,因为需要即时执行(如网页加载时立即解释执行)。
- 函数支持:脚本语言中可以定义和调用函数,如JavaScript支持函数定义和调用。
2)例题解析
- 题目解析
- 选项分析
- A选项:错误,脚本语言不是通用的程序设计语言
- B选项:错误,脚本语言不适合系统级开发
- C选项:正确,脚本语言主要采用解释方式实现
- D选项:错误,脚本语言支持函数定义和调用
- 答案:C
- 考点:脚本语言的基本特性和实现方式
- 选项分析
13. 例题:编译器的常见处理方式
- 题目解析
- 中间代码类型:现代编译器常将高级语言源程序转化为中间代码,常见形式包括后缀式、三地址码和树等
- 教材依据:教材57页明确指出,最常用的中间代码是与汇编语言指令相似的三地址码
- 实现方式:三地址码通常采用四元式实现
- 答案:B(三地址码)
14. 例题:用户定义标识符
- 题目解析
- 可命名对象:
- 变量:可直接由程序员命名(如x、sum等)
- 函数:定义时可自定义名称(如求和函数命名为sum,交换函数命名为sw)
- 数据类型:特定用户定义类型可命名,如枚举类型(参见教材47页用户定义类型部分)
- 不可命名对象:
- 关键字/保留字:由语言预定义,用户不可修改
- 注释:直接书写内容,无需命名
- 枚举类型特点:属于用户自定义数据类型,在Java/C++中可由用户命名
- 答案:应选择变量、函数、数据类型(具体选项根据题目设置)
- 可命名对象:
15. 例题:编译阶段划分
1)例题:标识符命名对象
- 题目解析
- 常见命名对象:变量、函数、数据类型是用户可定义的标识符对象
- 非命名对象:关键字/保留字(语言预定义)、注释(非程序对象)
- 答案:B(②③④)
2)例题:编译阶段判断语句形式
- 题目解析
- 词法分析:识别单词符号(如int识别为保留字,a识别为变量)
- 语法分析:组合单词为表达式/语句(如"int a,b;"识别为完整语句)
- 语义分析:分析语句含义(如类型匹配检查)
- 考点:形式正确性判断属于语法分析阶段
- 答案:B
3)例题:后缀式表示计算
- 题目解析
- 后缀式特点:无需括号,运算符在操作数后(如ab+表示a+b)
- 求值方法:使用栈结构,遇操作数入栈,遇运算符弹出栈顶元素运算
- 转换步骤:
- 给中缀式加括号:(a−(b∗(c+d)))
- 运算符移到括号外:(a(b(cd)+)∗)−
- 去掉括号:abcd+∗−
- 语法树构建:从最内层运算开始(先c+d,再b*,最后a-)
- 答案:C(栈)、D(abcd+∗−)、D(对应语法树)
16. 例题:编译和解释
- 题目解析
- 编译过程:源代码→目标代码(正确)
- 解释过程:边解释边执行(非完整转换)
- 执行效率:编译方式更快(已生成目标代码直接执行)
- 易错点:解释语句的转换对象描述错误
- 答案:A(①③)
17. 例题:函数调用控制
- 题目解析
- 实现原理:函数调用遵循"先进后出"原则(类似栈结构)
- 嵌套调用示例:
- 错误选项:
- 哈希表:用于快速查找
- 符号表:存储编译期符号信息
- 队列:先进先出结构
- 记忆点:函数调用栈与数据结构栈特性一致
- 答案:C
18. 例题:高级设计语言
1)语言控制结构
- 题目解析
- 基本结构:顺序、选择(if/else)、循环(while/for)
- 错误选项:
- 递归:算法实现方式
- 递推:数学推导方法
- 函数:程序组织单元
- 答案:A
2)程序设计语言成分
- 题目解析
- 基本成分:数据、运算、控制、传输(教材P46)
- 数据类型分类:
- 枚举:用户定义类型(需显式声明取值)
- 数组:构造类型(由基本类型组合而成)
- 考点:教材P47原知识点
- 答案:C(传输)、B(用户定义)、C(构造)
19. 例题:程序设计语言
- 语用概念:表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响(教材第43页黑体字第三段)
- 语境组成:指理解和实现程序设计语言的环境,包括编译环境和运行环境
- 考点提示:2020年后出题趋势更注重教材原话的概念性知识考察
20. 例题:程序编译过程
1)编译阶段分析
- 类型检查阶段:在程序编译过程中,执行类型分析和检查是在语义分析阶段完成(教材第56页原话)
- 编译解释区别:
- 编译:将高级语言源代码转换成目标代码的过程
- 解释:逐行执行源代码不生成目标代码
- 速度比较:编译方式下用户程序运行速度更快
2)程序设计语言成分
- 基本成分:包括数据、运算、控制和传输
- 数据分类:
- 枚举属于用户定义类型
- 数组属于构造类型
- 数据分类:
- 控制结构:包含顺序、选择(即分支)和循环三种基本结构
- 函数调用机制:函数调用和返回控制是通过栈数据结构实现的
21. 例题:算术表达式处理
- 转换方法:
- 第一步:给所有运算部分加括号。例如78+21×(36-34)先给36-34加括号,再给21×(...)加括号,最后给78+...加括号
- 第二步:将运算符移到对应括号的后面。如(36-34)变为(36\ 34\ -)
- 第三步:去掉所有括号得到后缀表达式。最终结果为78\ 21\ 36\ 34\ -\ *\ +
- 计算工具:计算机处理后缀表达式时使用栈(stack)数据结构进行计算
- 答案:第一空选B(78 21 36 34-*+),第二空选A(栈)
22. 例题:系统为全局变量分配的存储空间
- 存储特性:
- 全局变量:系统分配的存储空间在程序运行过程中一般不变
- 局部变量:分配的存储单元可以动态改变
- 分类依据:
- 按作用域分为全局变量和局部变量
- 按运行时的值可变性分为常量和变量
- 答案:选C(全局变量)
23. 例题:C语言函数说法判断
- 正确说法:
- 函数是具有独立功能的程序单元(如专门实现加法运算的函数)
- 需要先声明后引用
- 定义包含函数首部和函数体
- 错误说法:
- 函数不允许嵌套定义(教材第50-51页明确指出)
- 答案:选D(函数允许嵌套定义)是不正确的
24. 例题:脚本语言判断
- 关键特征:
- 解释性:无需编译直接执行
- 面向对象:支持类和对象
- 动态类型:变量类型运行时确定
- 典型代表:
- Ruby:教材第44页明确说明其符合全部特征
- JavaScript:虽然是脚本语言但不完全符合题目所有特征
- 易错点:容易因熟悉JavaScript而误选
- 答案:选C(Ruby)
四、程序控制结构
1. 选择结构
- 基本概念:在两种或多种分支中选择其中一个的逻辑结构
- 类型对比:
- 顺序结构:按照代码书写顺序依次执行
- 选择结构:通过条件判断选择执行路径
- 循环结构:在条件满足时重复执行特定代码块
- 函数:不属于基本控制结构
- 典型考题:2023年第22题正确答案为B(选择)
2. 枚举类型
- 分类依据:按照数据组织形式的不同
- 类型归属:
- 基本类型:整型、字符型、实型和布尔类型
- 用户定义类型:枚举类型(明确说明"枚举属于用户定义类型")
- 构造类型:数组、结构、联合
- 指针类型:type *
- 抽象数据类型:类类型
- 典型考题:2023年第23题正确答案为B(用户定义)
五、编译过程
1. 词法分析
- 核心任务:逐个字符扫描源程序,识别"单词"符号
- 处理对象:
- 关键字/保留字
- 标识符
- 常数
- 运算符
- 标点符号
- 输出结果:构成语法分析的基本单位
2. 语法分析
- 核心任务:分析单词串是否构成合法语法结构
- 主要工作:
- 验证表达式、语句的合法性
- 检查和处理语法错误
- 构造语法树(无语法错误时)
- 阶段关系:在词法分析基础上进行
六、程序语言数据成分
1. 变量分类
- 按可变性:
- 常量:值不可变
- 变量:值可变
- 按作用域:
- 全局变量:存储空间固定
- 局部变量:存储单元动态分配
2. 例题解析
- 题目22-23:
- 语法:表示语言记号和使用者关系(A正确)
- 语境:包括开发环境和运行环境(A正确)
- 题目24:
- 类型检查和语义分析阶段执行(C正确)
- 解题要点:
- 区分语法分析和语义分析阶段
- 注意语境包含的两种环境类型
七、知识小结
|-------------|----------------------------------------------------------|---------------------|------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 中缀表达式转后缀表达式 | 1. 按运算优先级加括号 2. 运算符移到括号外 3. 去掉所有括号 例:x-y+c*8 → xyc+8*- | 括号处理顺序和运算符位置易错 | ★★★ |
| 编译与解释程序区别 | - 编译:生成目标程序,执行效率高 - 解释:逐行解释执行,不生成目标程序 | 编译程序是否参与运行控制(编译不参与) | ★★ |
| 函数调用方式 | - 传值调用:单向传递,实参可为变量/常量 - 引用调用:双向传递,实参必须为变量 | 引用调用下常量/表达式不可用 | ★★★ |
| 变量存储地址分配 | 编译时为变量分配逻辑地址,运行时转为物理地址 | 逻辑地址与物理地址的转换阶段 | ★★ |
| 动态网页处理语言 | PHP是动态网页处理的典型语言(对比HTML/LISP) | 早期考题,需注意现代技术演进 | ★ |
| 符号表作用 | 存储编译过程中符号的类型、特征等信息 | 符号表与中间代码(如3地址码)的区别 | ★★ |
| 程序设计语言成分 | 基本成分:数据、运算、控制、传输 - 枚举:用户定义类型 - 数组:构造类型 | 枚举与数组的类型归属易混淆 | ★★ |
| 语法分析阶段 | 判断语句形式是否正确(词法分析仅识别单词符号) | 与语义分析(类型检查)的区分 | ★★★ |
| 后缀表达式求值 | 使用栈结构:遇操作数入栈,遇运算符弹出计算 | 栈的先进后出特性匹配函数调用 | ★★★ |
| 全局变量存储 | 全局变量在静态数据区分配,空间固定 | 局部变量存储在动态数据区(栈/堆) | ★★ |
| 脚本语言特性 | - 解释性执行(如JavaScript/PHP) - 不生成目标程序,适合轻量级任务 | 脚本语言非通用程序设计语言 | ★★ |
| 中间代码形式 | 常用3地址码(四元式实现),类似汇编指令 | 中间代码与目标代码的差异 | ★★ |
| 函数调用控制 | 通过栈实现嵌套调用的返回控制(后进先出) | 栈与队列(先进先出)的应用场景对比 | ★★★ |
| 程序控制结构 | 顺序、选择(分支)、循环 | 选择结构实现多分支逻辑 | ★ |
| 语义分析任务 | 类型分析和检查(如变量类型匹配) | 与语法分析(形式正确性)的区分 | ★★★ |