c语言编译器前端的设计与实现

计 算 机 与 信 息 工 程 学 院

软硬件专业综合课程设计总结报告

题目: C语言编译器前端的设计与实现

姓 名:

学 号:

专 业: 计算机科学与技术

指导教师:

起止日期:

计 算 机 与 信 息 工 程 学 院

软硬件专业综合课程设计任务书

实践题目

C语言编译器前端的设计与实现

学生姓名

班级

学号

指导教师

职称

实践地点

计算机基础实验室

实践日期

选题的目的:

编译器前端是制作一个编译器最为关键性的一个步骤,设计一个优秀的前端,直接影响到后期编译器的实现效率。编译器前端具有多样化,实现的方法较多,如何选择更优秀的方法来设计,让许多人一直不懈的研究下去。并且编译器前端的设计能与自然语言处理相互印证,是一个值得思考的领域。

技术要求:

1、熟练掌握一门语言,熟练掌握C语言语法使用,以及各种语法结构

2、良好的算法数据结构基础,对常见的数据结构模型能够实现

3、对编译原理知识有良好的基础,对于各种常见文法做到心中有数

4、熟练使用VS2005开发工具

进度安排:

20**年11月26日——20**年**月09日 可行性研究、需求分析

20**年**月10日——20**年**月23日 总体设计

20**年**月24日——20**年01月06日 详细设计

20**年01月07日——20**年01月**日 系统调试、测试

20**年01月14日——20**年01月18日 撰写实训报告

20**年01月19日——20**年01月20日 验收

主要参考资料:

[1] 钱焕延.编译技术第2版[M].南京:东南大学出版社出版,2002。

[2] 康慕宁.编译原理[M].西安:西北工业大学出版社出版,2003。

[3] 贺世娟,陈冀川.Visual studio 2005 程序设计[M].北京:中国水利水电出版社出版,2008.8。

[4] 杨克玉.Visual studio 2005程序设计实训教程[M].北京:机械工业出版社出版,2009.2。

教师签名:

年 月 日

C语言编译器前端的设计与实现

摘 要:编译器是程序员使用的关键工具,程序员每天都在使用编译器,并且非常依赖于其正确性和可靠性。编译器作为广大IT从业者必须接触的系统软件,它的设计本身又是一个极其庞大的工程。编译器相关的各项技术经过近几十年的发展,已经日臻成熟,然而编译器构造原理和技术依然是计算机科学中理论与实践相结合的最好典范。

本文首先介绍了C语言及C语言编译器的发展历程,其次对本次开发所用到的工具Visual Studio C++2005以及面向对象的程序设计方法做一下简单介绍。最后重点介绍了编译器前端的详细开发过程,分为三个部分分别阐述:词法分析器的设计,语法分析器的设计,语义分析部分。每个部分又分别从总体框架,详细流程,重点数据结构和函数,以及与其他部分的接口等方面予以阐述。由于C语言本身的复杂性,很难面面俱到实现所有标准定义,所以本次设计只象征性的选择部分具有代表性的功能。在本文的第四章详细给出了此次设计所实现的功能和语法规范,同时也给出了编译器的运行方式。

关键词:编译器前端、C源程序、面向对象程序设计方法、VC++

-

- PAGE 1 -

目 录

TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc256980583" 摘要 PAGEREF _Toc256980583 \h I

HYPERLINK \l "_Toc256980585" 第1章 绪论1

HYPERLINK \l "_Toc256980586" 1.1 C语言及编译器概述 PAGEREF _Toc256980586 \h 1

HYPERLINK \l "_Toc256980587" 1.2 C编译器设计思想 PAGEREF _Toc256980587 \h 1

HYPERLINK \l "_Toc256980588" 1.3 开发工具的选用及介绍 PAGEREF _Toc256980588 \h 2

HYPERLINK \l "_Toc256980589" 1.4 论文组织结构 PAGEREF _Toc256980589 \h 3

HYPERLINK \l "_Toc256980590" 第2章 C语言词法分析器总体分析与设计4

HYP

c语言编译前端,c语言编译器前端的设计与实现.doc相关推荐

  1. 2.c语言编译预处理,c语言第03章-编译预处理2.ppt

    c语言第03章-编译预处理2 第3章 编译预处理 编译预处理是指,编译时,首先对编译预处理命令进行处理,然后再将预处理后的中间结果进行编译,以得到目标代码. 教学目的: 掌握#define.#incl ...

  2. 用c语言编译二叉树,C语言 数据结构平衡二叉树实例详解

    数据结构平衡二叉树 参考代码如下: /* 名称:平衡二叉树 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include ...

  3. c语言程序设计 徐庆生,C语言中循环结构程序课的教学设计与探讨.doc

    C语言中循环结构程序课的教学设计与探讨 摘要:循环结构的程序设计是面向过程的程序设计课程的核心部分,掌握好循环结构的程序设计技术对学好此类课程至关重要.本文重点介绍了"C语言程序设计&quo ...

  4. AIDE能进行C语言编译吗,java手机编译器AIDE

    java手机编译器AIDE [2021-01-30 01:13:50]  简介: 系统运维 我们在嵌入式的开发中经常会见到 GCC 和 gcc,那么它们两有何不同呢?GCC(GNU Compile C ...

  5. C语言编译cc,c语言编译过程及cc 的使用

    生成一个可执行的文件通常需要经过以下几个步骤: 预处理你的源代码,去掉注释,以及其他技巧性的工作就像在 C 中展开宏. 检查代码的语法看你是否遵守了这个语言的规则.如果没有,编译器会给出 警告. 把源 ...

  6. c语言编译时间,C语言中关于时间的函数

    C语言中关于时间的函数 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.下面我们一 ...

  7. 在线进行C语言编译,在线C语言编译及考试系统.doc

    摘要: C语言是一种计算机程序设计语言.它既具有高级语言的特点,又具有汇编语言的特点.它由美国贝尔研究所的D.M.Ritchie于1972年推出.1978后,C语言已先后被移植到大.中.小及微型机上. ...

  8. libvirt 用c语言编译,基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include #include int getDomainInfo(int id) { virConnectPtr conn = NULL; v ...

  9. c语言编译笑脸,C语言快速入门——笑脸绘图程序:窗口实现

    将控制台窗口分为三部分 分割窗口事实上是通过把输入光标定位到某处,然后使用printf函数输出字符实现的.在程序中,这一功能是由help模块提供,具体由help_init函数提供实现.help模块中的 ...

  10. 用c语言编译二叉树,C语言实现二叉树的基本操作

    我在前面的博客中解说了链表.栈和队列.这些数据结构事实上都是线性表,而且给出了具体的实现. 从今天開始.我们将要来学习树,树作为一种数据结构我们常常会用到,作为起步和基础.我们先来实现二叉树.也就是每 ...

最新文章

  1. 前沪江高级架构师学习笔记分享:分布式框架设计与实现
  2. saltstack配置apache
  3. redis 延时任务
  4. exception javax.crypto.BadPaddingException: Given final block not properly padded
  5. rk3288 android4.4,ubuntu16.04下firefly rk3288的编译安卓4.4
  6. WebOS + WebIM
  7. (王道408考研操作系统)第三章内存管理-第一节4:连续分配管理方式(单一连续、固定分区和动态分区分配)
  8. 父亲节,来认识一下这几位“爸爸”
  9. sphereface 训练出现的问题
  10. 我的2013——不平凡的第一次
  11. python-绘制双轴柱状图
  12. 数据库、SID实例、Oracle数据库、sys、system用户
  13. 【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)
  14. Ubuntu 软件包管理 常用 apt 命令
  15. 【论文阅读】AProNet: Detecting objects with precise orientation from aerial images
  16. light7ui 刷新子页面 js不能加载的问题
  17. python-docx 中文个人翻译
  18. MTK软件测试简历,【转帖】MTK]平台相关资料
  19. 计算机移动互联网是学什么,学移动互联网开发需要学些什么课程?
  20. 基于STM32的电子琴音乐播放器设计

热门文章

  1. 8日直播预告丨Oracle 19c X86下移经验分享
  2. 高手如何应对复杂系统架构的演进
  3. 18C 也不能避免 SQL 解析的 Bug
  4. 实践GoF的设计模式:单例模式
  5. 教你Python字符串的基本操作:拆分和连接
  6. Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow
  7. 震惊,PostGIS还可以这样用!!!
  8. 来吧,1分钟带你玩转Kafka
  9. 贝叶斯思维 统计建模的python_贝叶斯思维统计建模的Python学习法
  10. Ubuntu安装之各种坑