云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 编译原理课设

编译原理课设

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 14:18:26

课 程 实 验 报 告

课程名称: 编

译 原 理

C语言汇编器的实现

专业班级: 学 号: 姓 名: 指导教师: 报告日期:

计算机科学与技术学院

一 实验内容

实现一个C语言的编译器。

二 概述

编译器可划分为词法分析器,语法分析器,语义分析器,四元组生成以及汇编代码生成。

本编译器除了实现上述几个基本模块外还实现了四元组的优化,汇编代码的优化和头文件的包含,由于时间缘故并没有对宏进行进一步的实现。 编译器支持的数据类型为:int, char, float(理论上对于所有数据类型均可识别,但不支持翻译)。 编译器支持的语法结构为:赋值语句(不支持”(“和”)”运算),do-while循环语句,if-else条件语句(if和else后面的语句块必须符合语法标准及被”{“和”}”包含),不支持函数调用。 四元组优化为:重复子元组的优化,如(+,a,c,b)……(+,a,c,d),若这两个四元组之间a和c的值没有发生改变,那么后一个四元组会被优化为(=,b,-,d)。 汇编代码的优化详细见后文。 (代码在答辩后对于老师的建议做了一定的修正,包括文件名输入,四元组的修正,以及新加入的汇编代码的优化) 使用说明:

1. 首先输入待编译文件名,然后选择是否需要优化汇编代码。若编译正确,则会产生

两个新的文件.o文件和.asm文件,分别对应待编译文件的中间代码和目标代码。 2. 本编译器仅支持全局变量 3. 本编译器不支持函数

4. If-else以及do-while后面的语句块必须符合定义的语法标准,即被“{”和“}”包

含。

三 实验方案

1. 词法分析器

C语言中有6中词法元素:标识符(identifiers),关键字(keywords),常量(constants),字符串文字(string literals),空白字符(white space)(包括注释)。而实际上还存在一些其他非空白符(如?{?、?}?、?;?)。因此稍作整合和简化,就有标识符,关键字,常量(包括整形常量,浮点常量,字符常量),字符串文字,操作符,其他非空白符六种,分别编号为1~6。在计数时,将sizeof归入关键字,以免重复计数。

1) 单词符号及种别表: 单词符号 变量 种别编码 1 2 2 2 2 2 2 2 2 2 标号 1 2 3 4 5 6 7 8 9 10 main int float double char if else do while 常量 字符串 = + - * / ( ) > >= < <= == != , { } ;

2) 算法的流程图

3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 开始 读入字符串S S为空? Y N 提取关键字token 结束 识别token词法属性 输出关键字token及其词法属性 可以看出,提取token和识别token便成为了本次实验的重难点。 3) 文法

首先以字符串方式读入程序,假定所有读入的字符串间都由间隔符分开,这用C语言的标准输入scanf便可以轻松实现。对于每一个字符串,根据经验假定是文法G[S]的句子。

其中G[S]为:

**S?N10PN10EN10GAPS (10进制整形常量)

**S?0N8PN8EN8GAPS(8进制常量) **S?0SXN16PN16EN16GAPS (16进制常量)

S?'ANY'GAPS (字符常量) S?\ANY\GAPS (字符串) S?OPANYGAPS (操作符)

搜索更多关于: 编译原理课设 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

课 程 实 验 报 告 课程名称: 编 译 原 理 C语言汇编器的实现 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 一 实验内容 实现一个C语言的编译器。 二 概述 编译器可划分为词法分析器,语法分析器,语义分析器,四元组生成以及汇编代码生成。本编译器除了实现上

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com