编译原理作业

  1. (简答题) 简述什么是编译的前端和后端,及为什么要把编译的过程划分为前端和后端?

前端主要由与源程序有关但与目标机无关的那些部分组成。这些部分通常包括词法分析、语法分析、语义分析与中间代码的产生,有些代码优化工作也可包括在前端。后端包括编译程序中与目标机有关的那些部分,如与目标机有关的代码优化和目标机的生成等。
将编译过程划分成前端和后端,主要目的是在多种源语言和多种目标语言的开发过程中,可以灵活搭配组合,消除重复开发的工作量,提高编译系统的开发效率。

  1. (简答题) 在编译过程中采用哪些技术手段可以实现编译程序可改变目标机?请说明理由。

在这里插入图片描述

  1. (简答题) 计算机执行用高级语言编写的程序有编译和解释两种途径,简述它们各自的特点和主要区别是什么?

    请添加图片描述 请添加图片描述
    主要区别是编译程序产生目标程序,解释程序不产生目标程序

  2. (简答题) 请分别简要概述“移植”和“自编译方式”的实现过程。
    请添加图片描述

    请添加图片描述

  3. (简答题) 简述编译程序生成的常用方法,并简要说明其实现过程。

    根据目标代码用机器语言去实现 ,已知一种语言的编译器构造另一种语言的编译器,移植,自编译方式

  4. (简答题) 画出编译程序的逻辑结构,简述其中每一部分的主要功能。

    请添加图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. (简答题) 简述符号表在编译中的作用,以及对符号表有哪些操作。

    在这里插入图片描述
    构造、查找或更新符号表

  2. (简答题) 根据C语言的编程经验,说明编译过程中有哪些典型错误,编译时能否把程序的所有错误找出来,如果不能,请举例说明。
    词法分析:非法字符
    语法分析:括号不匹配、缺少
    语义错误:说明错误、作用域错误。
    编译时不能把程序的所有错误找出,比如说除数为零,引用数组元素下标错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值