欢迎来到魔幻小生的博客

软件设计师:程序设计语言基础知识

基本概念

  • 低级语言:0、1组成的机器指令序列和汇编语言
  • 高级语言:程序设计语言,如Java(编译型),C++(编译型),Python(解释型)等

image

  • 解释器:翻译时不生成独立的目标程序,解释程序和源程序都参与程序运行过程
  • 编译器:翻译时独立生成目标程序,源程序和编译程序不再参与目标程序的运行过程 如:javac->class

程序设计语言的控制成分

顺序结构、选择结构、循环结构

源程序中数据必须具有类型,便于为数据合理分配存储单元,便于对参与表达式计算的数据对象进行检查,便于规定数据对象的取值范围及能够进行的运算。

传值调用与传地址调用

image

  • 传值调用:实参的值传递给形参
  • 传地址调用:实参的地址传递给形参,实参不能是常量、表达式(无地址),可以实现形参和实参数据的双向传递

例题:

image

image

image

image

image

image

image

image

image

答案 BD A D B D D B A C

编译程序基本原理

工作阶段

image

image

中间代码生成、代码优化可省略

源程序 -> 词法分析 -> 记号流 -> 语法分析 -> 分析树(语法树) -> 语义分析

符号表管理

image

词法分析

对源程序从前到后逐个字符扫描,识别一个个“单词”符号,如关键字、标识符、常数、运算符、分隔符等。

词法错误:非法字符,关键字/标识符拼写错误

image

image

语法分析

对各条语句的结构进行合法性分析

语法错误:缺括号/分号、if/elif不匹配、变量未声明

image

image

语义分析

对数据类型进行分析和检查,不能发现动态语义错误,运行时才能检测出来

语义错误:死循环(动态)、零除数(动态)、数据类型不匹配

image
image

中间代码生成

image

目标代码生成

image

正规式

词法分析的工具

正规式 正规集
Ab 字符串ab构成的集合
a|b 字符串a、b构成的集合
a* 由0个或多个a构成的字符串集合
(a|b)* 所有字符a和b构成的串的集合
a(a|b)* 以a为首字符的a、b字符串的集合
(a|b)*abb 以abb结尾的a、b字符串的集合

*:代表0次或多次
| : 代表左边或者右边

image

有限自动机

词法分析的工具

image

image

ε : 无须识别直接通过

image

image

上下文无关文法

语法分析的工具

image

大写字母是非终结符,小写字母是终结符号,每条表达式都称为产生式

image

中缀后缀式

image

中序遍历 -> 中缀式 左根右
后序遍历 -> 后缀式 左右根

后缀式又称为逆波兰式

image

image

posted @ 2024-04-16 00:28  魔幻小生  阅读(32)  评论(0编辑  收藏  举报