Skip to content

第17章 程序设计语言与语言处理程序基础

📚 本章课程

课程内容
17.1.1 程序设计语言概述语言分层(机器/汇编/高级)与翻译器全景;本章命题主线入口
17.1.2 编译程序与解释程序目标代码 vs 边解释边执行;字节码+虚拟机/JIT混合模型
17.1.3 多种程序设计语言特点语言识别题:Fortran/Pascal/Lisp/Prolog/脚本语言关键词速记
17.1.4 程序设计语言的基本成分数据类型 + 控制结构三分法 + 类型转换触发场景
17.1.5 函数调用方式传值/传引用对输出结果影响;递归/嵌套调用为何依赖栈
17.2.1 编译程序基本原理概述编译器流水线全景;符号表与错误处理贯穿作用
17.2.2 编译过程概述阶段职责/输入输出/错误分类:软考最爱考的“职责匹配题”
17.2.3 文法文法四元组 + Chomsky层次与识别模型对照表
17.2.4 正规式与正规集正规式三运算与等价关系;文字约束->正规式匹配
17.2.5 有限自动机DFA/NFA/ε转换;识别字符串与正规式等价联动
17.2.6 后缀表达式表达式树后序遍历=后缀;栈求值“先右后左”
17.3 章节概述命题主线总图与考前速记表
17.4 章节回顾冲刺复盘:高频坑位 + 模拟题闭环训练

这章在软考里考的不是“写编译器”,而是考你能否把阶段职责、栈模型、等价关系说清楚。

🎯 本章定位(命题老师视角)

  • 常见分值形态:本章在上午选择题中通常占据相对稳定的分值(经常接近 5~6 分量级,具体以当次真题为准)。
  • 命题风格
    • 用一句话描述一个阶段职责,让你选“词法/语法/语义/运行时”。
    • 给一个后缀表达式或表达式树,让你求转换/求值。
    • 给一个正规式或有限自动机,让你判断等价或识别哪些串。
  • 高频本质:都是“对应关系题”。只要对应关系记牢,几乎不需要临场发挥。

🧭 命题主线(抓住这4条就稳)

  1. 编译阶段职责与错误分类:词法/语法/语义/运行时分别管什么、输出什么、能发现什么错误。
  2. 栈模型贯穿两类题:调用栈(递归/嵌套返回)+ 操作数栈(后缀表达式求值)。
  3. 形式语言三角等价:正规式 <-> 有限自动机 <-> 正规文法(表达能力等价)。
  4. 表达式树与遍历:前序=前缀,中序=中缀,后序=后缀;后缀求值先右后左。

⭐ 复习优先级(时间不够就按这个顺序)

  • 第一优先(必拿分):17.2.2(编译阶段职责/错误)+ 17.1.5(传参+栈)
  • 第二优先(高频联动):17.2.4(正规式)+ 17.2.5(有限自动机)+ 17.2.6(后缀)
  • 第三优先(概念题):17.2.3(文法层次)+ 17.1.3(语言识别题)

📌 一页速记(考前10分钟扫一遍)

1) 编译阶段职责速记表(输入-输出-错误)

阶段输入输出常见错误
词法分析字符流Token流非法字符/记号不合法
语法分析Token流语法树/分析树括号不匹配/缺分号/结构错
语义分析语法树+符号表带语义信息的树/IR类型不匹配/声明使用不一致
运行阶段可执行程序运行结果数组越界/变量为0作除数/死循环

高频判断:中间代码生成、代码优化通常按“可选阶段”考。

2) Chomsky层次与识别模型(只背这一行)

0型->TM;1型->LBA;2型(CFG)->PDA;3型(正规)->FA。

3) 传值 vs 传引用(输出题的核心)

方式传递内容修改形参是否影响实参
传值值的拷贝
传引用/传址地址/别名

4) 正规式三运算(会读就能做题)

  • |:并(A或B)
  • 连接:AB(先A后B)
  • *:0次或多次(含空串ε)

等价题做法:用反例验证“双向包含”。

5) 后缀表达式栈规则(最常扣分点)

  • 操作数入栈
  • 遇运算符:先弹右操作数,再弹左操作数,算 左 op 右,结果入栈

🧠 高频坑位(最容易被扣分的点)

  • 把“语法分析输入=字符流”写错:更常见口径是“语法分析输入=Token流”。
  • 把“解释型”理解成“不经过词法/语法/语义”:解释执行也常有这些前端步骤。
  • 后缀求值把顺序写反:a b - 写成 b-a
  • NFA识别题只走一条路径:NFA是“存在一条可达终态路径即可接受”。

✅ 建议学习路线

  • 先抓全景:读 docs/software-designer/17-programming-language/12-chapter-overview.md
  • 然后先做稳定得分:17.2.2(阶段+错误)-> 17.1.5(传参+栈)-> 17.2.6(后缀)。
  • 最后做联动:17.2.4(正规式)+ 17.2.5(自动机)+ 17.2.3(文法层次)。
  • 冲刺闭环:docs/software-designer/17-programming-language/13-chapter-review.md

🎯 本章课程总览

课程内容时长
17.1.1 程序设计语言概述建立程序设计语言分层(机器/汇编/高级)与语言处理程序(编译/解释)的整体框架,明确第17章在软考中的高频考点。45分钟
17.1.2 编译程序与解释程序系统掌握编译器与解释器的工作方式、输出产物与性能权衡,能在选择题中精准判断描述的正误。45分钟
17.1.3 多种程序设计语言特点掌握常见程序设计语言的典型特征与应用场景,能在选择题中根据描述快速识别语言或判断特性。45分钟
17.1.4 程序设计语言的基本成分掌握高级程序设计语言的基本语言成分(数据类型、控制结构等)及类型转换的常见触发场景,解决选择题中的概念辨析。45分钟
17.1.5 函数调用方式掌握传值调用与传引用调用的差异,并能结合代码判断调用后的变量值;理解递归/嵌套调用为何依赖栈。45分钟
17.2.1 编译程序基本原理概述从整体上理解编译器的组成与工作流:分析(词法/语法/语义)、中间代码、优化、目标代码生成,并掌握符号表与错误处理在各阶段的贯穿作用。45分钟
17.2.2 编译过程概述细化掌握编译过程各阶段任务、输入输出与典型错误类型,能快速解答“哪个阶段做什么/能发现什么错误”的高频题。45分钟
17.2.3 文法掌握文法的四元组表示、终结符/非终结符/产生式等基本概念,并理解Chomsky文法层次与自动机模型的对应关系。45分钟
17.2.4 正规式与正规集掌握正规式(正则表达式)的基本构造与含义,理解正规式与正规集(字符串集合)的等价关系,并能完成软考常见的“文字描述->正规式”匹配题。45分钟
17.2.5 有限自动机掌握有限自动机(DFA/NFA)的基本概念、识别字符串的方法与ε转换含义,并理解其与正规式/正规文法的等价关系。45分钟
17.2.6 后缀表达式掌握后缀表达式(逆波兰式)的构造与栈求值方法,能根据表达式或语法树写出后缀形式并正确计算结果。45分钟
17.3 章节概述从语言基础到编译实现,再到形式语言与表达式求值,构建第17章高频考点全景图并给出复习优先级与作答模板。45分钟
17.4 章节回顾以命题老师视角梳理第17章稳定得分点与高频陷阱,并通过模拟练习把“职责匹配、栈模型、等价关系”三条主线练到不失误。45分钟

🧪 作答模板(客观题/综合题)

  • 第一步:识别题型(概念、流程、计算、综合)。
  • 第二步:提取关键词(对象、条件、约束、目标)。
  • 第三步:调用方法并写出关键中间步骤。
  • 第四步:检查边界(符号、范围、单位、合理性)。

🛣️ 学习路线建议

  • 第一轮:按课程顺序建立知识骨架。
  • 第二轮:按题型专题训练并沉淀模板。
  • 第三轮:只看错题与速记表做考前冲刺。