2023年软件设计师笔记(备考中)_02程序设计语言

目录

一、编译、解释与翻译阶段

编译方式

解释方式

符号表

二、编译过程

词法分析:

语法分析

语义分析(语法树、分析树)

目标代码生成

中间代码生成

三、正规集与正规式

四、小知识点

动态语义错误

五、手写笔记


一、编译、解释与翻译阶段

  • 编译方式

词法分析、语法分析、语义分析、中间代码生成、代码优化、目标生成。

  • 解释方式

词法分析、语法分析、语义分析。

编译器和解释器都不可省略:词法分析、语法分析、语义分析。且顺序不可交换,即词法分析、语法分析、语义分析是必须的。即编译器方式可以在词法分析,语法分析,语义分析后生成目标代码。

  • 符号表

  1. 不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。
  2. 记录源程序中各个字符的必要信息,以辅助语义的正确性,检查和代码生成。
  3. 对可执行语句,则是翻译成中间代码或目标代码。

二、编译过程

  • 词法分析:

输入:源程序;输出:记号流。

词法分析阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。

  • 语法分析

输入:记号流;输出:语法树(分析树)。

语法分析阶段主要作用:对各条语句的结构进行合法性分析,分析程序中的句子结构有无定义;括号是否成对)是否正确。(语法错误)

  • 语义分析(语法树、分析树)

检查运算能否成功、类型是否匹配

语义分析阶段的主要作用是进行类型分析和检查,语义分析阶段可以发现程序中得所有语法错误不能发现所有的语义错误可以发现静态语义错误不能发现动态语义错误,动态语义错误运行时才能发现

  • 目标代码生成

目标代码生成阶段的工作与具体的机器密切相关寄存器的分配工作处于目标代码生成阶段。

  • 中间代码生成

常见的中间代码:后缀式,三地址码,三元式,四元式,树(图)

中间代码与具体的机器无关,(不依赖具体机器),可以将不同的高级程序语言翻译成一种中间代码,中间代码可以跨平台。

因为与具体机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。

三、正规集与正规式

A | b (字符串 A、b构成的集合,二选一)。

A*(*闭包,类似于幂,可由0或者多个构成)。

eg:

( A*b)*:A闭包;(A*b)闭包。

正规集可以用于正规式描述,用有限自动机表示。

 

四、小知识点

  • 动态语义错误

语义分析只能检测出程序的静态语义错误,不能检测出动态的语义错误,要到程序运行时才能检测出来。(语义分析无法检测所有的语义错误!

五、手写笔记

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_floyd_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值