面向教学的类c编译器的设计与实现

面向教学的类c编译器的设计与实现

ID:33624384

大小:317.66 KB

页数:6页

时间:2019-02-27

面向教学的类c编译器的设计与实现_第1页
面向教学的类c编译器的设计与实现_第2页
面向教学的类c编译器的设计与实现_第3页
面向教学的类c编译器的设计与实现_第4页
面向教学的类c编译器的设计与实现_第5页
资源描述:

《面向教学的类c编译器的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、万方数据第24卷第6期2008年11月福建师范大学学报(自然科学版)JournalofFujianNormalUniversity(NaturalScienceEdition)V01.24No.6NOV.2008文章编号:1000—5277(2008)06-0029—05面向教学的类c编译器的设计与实现邹昌伟(福建师范大学软件学院,福建福州350108)摘要:设计并实现了一个面向教学的类C编译器,支持全局或局部变量的定义、函数参数传递和函数递归调用.为避免对实际硬件体系结构的依赖,采用了Java语言的设计思

2、想,类C编译器实现了先编译后解释执行的设计方案,同时给出了比文法更为直观的类C语言的语法图.关键词:编译器;面向教学;类C语言中图分类号:TP314文献标识码:ADesignandImplementionofaTeaching—orientedC-likeCompilerZOUChang—wei(FacultyofSoftware,FujianNormalUniversity,Fuzhou350108,China)Abstract:Designingandimplementingateaching-orie

3、ntedC—likecompiler,whichsup—portsthedefinitionoflocalandglobalvariables,functionparameters,aswellasrecursivecalloffunctions.Toavoidthedependencyofhardwarearchitecture,usingthedesignthinkingofJavalanguage,whichcompilesprogramsintomediatelanguageandtheninter

4、—pretsit.C—likelanguage'sgrammardiagramisshown,whichismuchmoreintuitivethanpuregrammar·Keywords:compiler;teaching—oriented;C—likelanguage《编译原理》是计算机专业的主要专业基础课之一.它介绍编译器构造的一般原理、基本设计方法和主要实现技术.该课程抽象难懂,但在教学与实践中如果能结合编译器的源码进行分析与改进,就能起到理论联系实际、由抽象到具体的效果.在传统的《编译原理》的教

5、学中,此课程的相关实验环节相对比较薄弱.虽然有诸多的开源编译器(例如Lcc【11编译器等),但这些工业化的编译器并不太适用于有限学时的实践教学.为此,国内不少高校采用Pascal语言创始人N.Wirth编写的PL/O语言[2]的编译程序来进行相关的实验教学.但PL/0语言主要存在两个问题:一是过于简单,甚至没有函数参数;二是语法上接近Pascal语言,但目前国内计算机相关专业的入门语言大多数采用的是C语言或由其衍生出来的语言,学生并不熟悉Pascal语法.基于此,本文设计并实现了一个适用于教学的类C编译器,

6、支持函数参数的传递,实现栈式存储管理,允许函数的递归调用,内置C风格的printf和scanf函数用于输入和输出,但唯一支持的数据类型为整型.1类C编译器的设计与实现为了避免对与课程无关的具体汇编语言的讨论,类C编译器采用的是Java语言的设计思想,即先编译后解释执行.为此需要定义出一套中间代码的指令集,这里采用的是四元式形式的中间代码.另外还需要实现一个虚拟机来解释执行编译后的中间代码.类C语言本身的语法定义并未采用文法的形收稿日期:2007。10—29作者简介:邹昌伟(1981一).男.助教,硕士,研究

7、方向:web.万方数据30福建师范大学学报(自然科学版)式,而是采用语法图的直观形式,语法图和文法相比具有更易于理解的优点.类c编译器构造时采用自顶向下的递归下降分析方法[2],它也是基于语法图进行分析的.类C语言的整体语法图如图1所示.图中由椭圆和圆形代表的其实是语法图对应文法的终结符,矩形方框代表的是相应文法的非终结符.图1规定了合法的类C程序的“程序体”应具有什么样的语法形式,此处“程序体”的概念显然是语法图对应文法的开始符号.图1很直观地给出了类c语言是由函数的定义和全局变量的声明所构成,全局变量可

8、以只声明而不进行初始化,也可在声明的时侯进行初始化,还可以同时声明多个全局变量,全局变量与函数的声明可以交替进行.图1类C语言的程序体1.1由语法图编写分析程序因为语法图中的矩形对应的是一个语法单元(例如函数体、表达式等),对应的是非终结符的概念,所以语法图中的每个矩形方框在分析程序中都由一个与之相应的函数进行处理,而椭圆或圆形实际上表示的是词法分析所得的记号(token),也即语法分析时的终结符.由语法图编写分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。