应用yacc实现micro c编译器35844

应用yacc实现micro c编译器35844

ID:4145353

大小:148.75 KB

页数:6页

时间:2017-11-29

应用yacc实现micro c编译器35844_第1页
应用yacc实现micro c编译器35844_第2页
应用yacc实现micro c编译器35844_第3页
应用yacc实现micro c编译器35844_第4页
应用yacc实现micro c编译器35844_第5页
资源描述:

《应用yacc实现micro c编译器35844》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第16卷第6期长春大学学报Voi.16No.62006年12月JOURNALOFCHANGCHUNUNIVERSITYDec.2006文章编号:1009-3907(2006)06-0063-05应用YACC实现MicroC编译器宋雅娟,刘刚(长春大学计算机科学技术学院,吉林长春130022)摘要:介绍了MicroC语言的文法特点,并以该语言为处理对象,用YACC实现了该语言的编译器。本文主要从编译技术的角度对MicroC语言的语法分析、目标代码及其解释执行过程进行了详细地阐述。关键词:MicroC编译器;YACC;目标代码中图分类号:TP314文献标识码:A0引言编译程序

2、是计算机系统软件的重要组成部分,其基本原理和实现技术也适用于一般软件的设计和实现,而且在软件工程、软件自动化、程序分析等领域有着广泛的应用。通常把编译程序视为高级语言到机器语言的转换程序,这种转换不是结构上的变换,而是基于语言语义的等价变换,因此编译程序设计的难度和复杂[1]性是极高的。目前已经有很多著名的编译程序,如C语言、C++等高级语言的编译程序,这些高级语言功能齐全,应用范围广,但相应的编译程序也比较复杂,不适合作为教学用。世界著名计算机科学家N.Wirth先生实现的PL/0语言是主要用于编译教学方面的计算机高级语言,其语言功能简单、结构清晰、可读性强,又具备了一

3、般高级语言的必须部分,但其所具有的嵌套式程序结构已经不为学生所了解。学生目前学习的高级语言多为C语言这样的非嵌套式的语言。基于这种情况,笔者设计了一个小型语言MicroC,它具有高级语言的最基本的特点,并具有与C语言类似的语法特点。笔者使用YACC实现了该语言的编译器。1MicroC语言1.1MicroC语言的特点MicroC语言以函数为基本单位,一个MicroC源程序由一个主函数和若干个其它函数组成。由主函数调用其他函数,其他函数也可以互相调用,MicroC只支持无参函数。函数的定义为:函数名(){变量声明部分语句}MicroC语言在数据类型上只支持整型。在语句上支持代

4、表顺序结构的赋值语句、输入语句和输出语句;代表分支结构的if语句;代表循环结构的whiie语句以及函数调用语句。它的关键字主要有main、if、eise、print、scan、whiie、int等。1.2MicroC语言的文法使用EBNF范式来描述MicroC语言的文法。收稿日期:2006-10-25作者简介:宋雅娟(1974-),女,吉林省柳河县人,长春大学计算机科学技术学院讲师,博士生,主要从事计算机软件理论研究。64长春大学学报第l6卷<程序>::=<函数列表><函数列表>::=<主函数>I<其它函数列表><主函数><其它函数列表>::=<函数>I<其它函数列表><

5、函数><主函数>::=<主函数头部>{<函数体>}<函数>::=<函数头部>{<函数体>}<主函数头部>::=main()<函数头部>::=<函数名>()<函数体>::=<语句序列>Iint<变量列表>;<语句序列><变量列表>::=IDI<变量列表>,ID<语句序列>::=<赋值语句>I<选择语句>I<循环语句>I<输入语句>I<输出语句>I<函数调用语句><赋值语句>::=<变量名>=<表达式>;<选择语句>::=if(<表达式>){<语句序列>}Ii(f<表达式>){<语句序列>}eise{<语句序列>}<循环语句>::=whii(e<表达式>){<语句序列>}<输

6、入语句>::=scan(<变量名>);<输出语句>::=prin(t<表达式>);<函数调用语句>::=<函数名>();<函数名>::=ID<变量名>::=ID<语句序列>::=<语句>I<语句序列><语句><表达式>::=<表达式><表达式>I<表达式><表达式>I<表达式>*<表达式>I<表达式><表达式>I<表达式><<表达式>I<表达式>><表达式>I<表达式>>=<表达式>I<表达式><=<表达式>I<表达式>==<表达式>I<表达式>!=<表达式>I<表达式>II<表达式>I<表达式><表达式>I!<表达式>IIDINUM1.3MicroC源程序示例main(

7、){ints;scan(s);i(fs>0){prin(tl);}}2MicroC编译程序2.1MicroC编译程序结构不同的编译程序都有自己的组织和工作方式,它们都是根据源语言的具体特点和对目标语言的具体要求来决定和设计出来的。因此,并没有一种固定的编译器结构。很难说哪种组织方式是最好的,但从功能角[2]度来说几乎都是一致的,换句话说其功能结构是一致的。图l说明了MicroC编译程序的功能结构。第6期宋雅娟,等:应用YACC实现MicroC编译器65源程序以文本文件方式存在,即以字符串形式存在。词法分析部分主要任务是检查词法

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

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

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