【软考】【程序设计语言基础】编译与解释

本文详细介绍了编译和解释的过程。在编译过程中,涉及词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成、符号表管理和出错处理。解释过程则在运行时直接执行源程序或中间代码,不产生目标程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 计算机对源程序的处理有两种方式,一种是解释型,一种是编译型。解释型就是输入一行代码按回车立即分析执行该条语句;编译型是指整个代码写完后,按编译运行才可以执行。

1.编译过程

这里写图片描述

这里写图片描述

1.1 词法分析

逐字符扫描,识别出“单词”符号,如关键字、标识符等。词法分析输出的单词常常采用二元组的方式,即单词类别和单词自身的值。

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

1.2 语法分析

根据语法规则将单词符号序列分解成各类语法单位,如表达式、语句、程序等。在此过程需要分配存储空间(基本数据类型和结构化数据类型以及连接数据,如返回地址、参数等)。分配策略有静态存储分配和动态存储分配。

  • 静态存储分配: 在编译时就可以安排好目标程序运行时的全部数据空间,并确定每个数据对象的存储位置。
  • 动态存储分配: 如果一个程序语言允许递归过程和可变数据结构,则需用栈分配和堆分配来动态存储分配。
  • 语法错误: 语法结构出错,if-endif不匹配,缺分号

1.3 语义分析

检查源程序是否存在语义错误。

  • 语义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值