软考-程序语言

本文探讨了编译与翻译程序的区别,强调了两者在词法分析、语法分析、语义分析上的共性,以及编译器和解释器的特点,指出中间代码生成的重要性。编译过程中目标代码生成与机器关联,而解释则不涉及独立目标程序的生成。
摘要由CSDN通过智能技术生成

编译与翻译

翻译程序

  • 翻译时不产生新的独立目标程序
  • 解释程序和源程序参与程序的运行

编译程序

  • 编译时产生新的独立目标程序
  • 编译程序和源程序不参与程序的运行

程序设计语言的成分

顺序、选择、循环结构

传值与传地址

编译、解释与翻译阶段

共同点:

编译和解释都不可省略 词法分析、语法分析、语义分析且顺序不可交换

编译器特点

  • 词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成
  • 中间代码生成 和 代码优化不是必要,可省略

解释器特点

  • 词法分析、语法分析、语义分析
    在这里插入图片描述

编译过程

1.词法分析

输入:源程序
输出:记号流
分析字符、符号是否符合规定

2.语法分析

输入:记号流
输出:语法树
分析程序中的句子,结构是否符合结构。能分析出所有的语法错误

3.语义分析

不能分析出所有的语义错误
分析类型是否匹配
不能发现动态语义错误,只能发现静态语义错误

4.目标代码生成

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

5.中间代码生成

  • 后缀式、三地址码、三元式、四元式和树(图)
  • 中间代码与机器无关

正规式

学会即可
在这里插入图片描述

有限自动机

最终都要回到终态
Σ表示可以跳过此阶段
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值