目录

TOC \o "1-5" \h \z \o "Current Document" 摘要I

ABSTRACTII

\o "Current Document" 1背景知识1

\o "Current Document" 1.1编译器的发展背景1

1.1.1编译器的产生1

1.2什么是编译器3

1. 1.3编译器的输出4

1. 1.4开发意义5

\o "Current Document" 1.2面向教学的意义5

\o "Current Document" 2理论分析8

\o "Current Document" 2.1概要流程8

\o "Current Document" 2编译阶段简介8

\o "Current Document" 3模块分析12

\o "Current Document" 1基础分析12

\o "Current Document" 3.2词法需求分析12

2. 1与语法分析器的交互流程12

2. 2主要功能和步骤13

\o "Current Document" 3语法需求分析14

1文法推导14

3.3.2构造分析树14

\o "Current Document" 4语义需求分析15

1语义规则15

4. 2目标形式16

\o "Current Document" 3.5文法规则17

\o "Current Document" 4编译器的实现18

\o "Current Document" 1程序结构定义18

1. 1文法结构19

1.2推导结构20

1.3语法树结构20

\o "Current Document" 2词法模块20

4.2.1实现的功能和技术20

4.2.2主要数据结构21

4.2.3示例函数23

3语法模块25

4.3.1实现功能和技术25

4.3.2主要数据结构26

4.3.3示例函数27

\o "Current Document" 4. 4语义模块29

4.4.1实现的功能和技术29

4.4.2主要数据结构30

4.4.3示例函数31

4. 5汇编模块33

5程序测试.

34

35

35

36

40

错误!未定义书签。

1使用方法....

2测试用程序

3测试结果....

结论

致谢

参考文献.

41

摘要

作为一个理论性和实践性非常重要的课程,编译原理在计算机的整个体系框架内都占有非常重要的地位,编译原理不仅自身所占比重非常大,更是许多门课程的基石,在学好这门课程的基础上对其他知识的理解才可以深入和清晰。而通过学习编译器的组成和运行流程可以深入了解编译原理的基础概念和使用方法,从而提高自身的理论及实践水平,提高自身的编程能力并且解决一些以前遇到的一些问题。而C语言是最基础的编程语言,大部分人的入门语言都是C语言,它的教学用途非常广泛,现在市面上有许多面向不同对象使用方便简单的编译器,但却没有一款主要针对教学的C语言编译器。如果可以制作出一款专门针对教学使用的C语言编译器一定可以解决一般编译器在教学过程中的不便之处。

编译器需要首先确定文法规则,继而确定对应正规表达式和有穷自动机的此法阶段,而后要通过已确立的文法建立下推自动机模型和语法树,在这之上还可以进行语义的纠错处理和代码的优化分析,并最终完成目标代码的生成。这是本程序的基本内核和关键点。本编译器使用C++语言实现,采用类C语言的LL文法,的主要功能有包括各部分的输出结果及中间代码,变量声明及赋值与运算,函数构造,整数、浮点数的运算,字符串的输入与输出,选择语句,循环语句,跳转语句以及生成目标语言。

关键词:编译原理、编译器、c语言

ABSTRACT

Compiler theory is a combination of theory and practice of curriculum, the studyand work in the computer professional plays a vital role. And through the study of thecomposition and running process of compiler can deeply understand the compilationprinciple is based on the concept and method of use, so as to improve own theory andpractice level, to improve their programming ability and solve som

用c语言编写一个简易的编译器,面向教学的简易c语言编译器的设计与实现(54页)-原创力文档...相关推荐

  1. c语言围棋对弈程序设计,C语言围棋对弈程序设计(59页)-原创力文档

    C语言围棋对弈程序设计 用C语言编写一个围棋对弈棋室的程序,模仿两人对弈的过程,其中包括自动提子功能,和自动点目功能. 1.围棋的一些基本常识: (1)围棋棋子的"气" 见右图1所 ...

  2. 用c语言编写一个完整的实现单链表,如何用c语言实现两个单链表的归并

    我已经用c语言编写运行请各位朋友帮忙看看哪错呵呵非谢谢 #include"stdio.h" #include"stdlib.h" typedef struct ...

  3. c语言程序水准路线,C++语言在水准路线简易平差中的应用实例(17页)-原创力文档...

    C语言在水准路线简易平差中的应用实例C语言在水准路线简易平差中的应用实例 PAGE C++语言在水准路线简易平差中的应用实例 [摘 要]:水准测量工作分为野外数据采集和内业计算,白天测得的大量数据,晚 ...

  4. 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...

    书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...

  5. 歌手比赛系统c语言程序注释,C语言程序课程设计—歌手比赛系统(20页)-原创力文档...

    淮南师范学院 课程设计报告 歌手比赛系统 姓 名:胡欢欢 学号: 1008010109 专 业:计算机科学与技术 班 级: 10 级( 1)班 指导教师:彭飞 职称: XXX 2013 年 3 月 7 ...

  6. c语言ch能储存多少字符,二级c语言程序设计习题与解答ch5-7函数字符(11页)-原创力文档...

    Ch5 -6 循环结构&字符数组 写出26个大写字母和他们的ASCII代码要求每行输出两组数据. #include main() { char ch; int i; for(i=0;i< ...

  7. 大学一级课题c语言报告,c语言一级课题总结(16页)-原创力文档

    c语言一级课题总结 篇一:<C语言程序设计实践>课题 综合实践大作业 任务1 课题名称: 学生顺序表的处理 课题内容: 在一个数据文件中存放若干学生数据记录,每条记录都 有如下数据项:学号 ...

  8. c语言已知24有8个因子,C语言上机考试题二(2页)-原创力文档

    C语言上机考试题二 (60分) 对下面的各题编写函数完成其操作,并在主函数中调用它输出结果 (用函数指针调用的加5分).要求对任何一道题不看任何书在25分钟 内完成程序设计,运行无误. 1. 德国数学 ...

  9. c语言二级试题讲解,C语言试题,二级C语言试题讲解(9页)-原创力文档

    二级 C 语言程序设计模拟试题(一) 一.单项选择题. (每小题1 分,共 20 分) 1.一个 C 语言程序是由( B )组成. A) 一个函数 B) 一个或若干个函数 C) 一个过程 D) 一个过 ...

最新文章

  1. AI做不了“真”3D图像?试试Google的新生成模型
  2. MFC 图片部分透明
  3. linux——samba共享以及基础用法
  4. 【IntelliJ】IntelliJ IDEA常用设置及快捷键以及自定义Live templates
  5. 【渝粤题库】陕西师范大学200851 微机实用技术
  6. AdoHelper使用MySQL存储过程示例
  7. php mssql_init,Php Mssql操作简单封装支持存储过程
  8. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  9. 会场安排(nyoj14)
  10. 微星主板B550M破击炮无U刷BIOS 内存条插3/4卡槽出现DRAM灯常亮,屏幕无法显示
  11. 腾讯云内容分发网络 CDN 产品认证课程笔记(二)——腾讯云CDN介绍
  12. SQL Server 2008用'sa'登录失败(错误18456)
  13. 完美解决网页中Flash狂闪的问题
  14. Mysql语法大全(命令行)(简洁、明了、全面)
  15. 傅里叶变换音频可视化_音频可视化中的信号处理方案
  16. ios 微信端 video 标签 兼容问题
  17. 电脑蓝牙已关闭,蓝牙开关不见的故障排除
  18. dreamweaver个人网页设计作业 小米商城官网商城购物网页设计 WEB静态网页作业模板 大学生个人购物商城网页代码 dw个人网页作业
  19. 参加培训的小盆友进步了
  20. cnpm安装 指定版本_vue npm install安装某个指定版本的方法

热门文章

  1. php 关联表 增加行,在多级关联表上保存多行-Cake PHP
  2. 计算机科学与物流工程国际学术会议,刘功婷-第五届信息科学、计算机技术与交通运输国际学术会议-交通运输学术论坛(ISCTT-IST 2020)...
  3. LVS IP隧道模式(IP Tunneling)
  4. 手变小是怎么回事_怎么让手指变细变长 9个小习惯轻松帮你解决
  5. 2022年二级注册建筑师《经济与施工》考点练习题及答案
  6. python爬取微信公众号文章(携带cookie)
  7. jquery的radio的change事件
  8. ASP在线转flv+所略图+flash在线录制视频
  9. GUI-面板Panel
  10. 在中国内地通过ESRI的Portal门户制作地图故事时图片和视频的来源问题的解决