迷你C 语言编译器文献综述

 2022-03-18 21:31:33

  1. 研究的目的及意义(不低于500字)

在本科专业软件工程的学习过程当中,笔者使用过很多著名的编译器来编译如C语言、C 语言、JAVA语言这类的高级语言程序,但是由于使用过程中对于程序如何更深层地被编译、执行这些过程知之甚少,所以在最基本的层面来说,笔者希望通过对于迷你C 编译器的学习和研究能让自己对于编译原理有一个更深入的认识; 在语言层面来说,笔者选择C 语言,是因为C 语言同时具有面向过程和面向对象的特点,在对其编译原理探知和研究的过程中,不仅能深入的了解编译的基础过程,还能对C 语言本身的特性、底层实现等进行深入的学习; 同时在本科学习的过程中,按照学院软件专业知识学习和动手能力共同进步的思路,希望能够通过自己的学习过程,使得自身成为创新能力、工程实践能力具备的毕业生,实现学院对软件专业学子的培养目标;

对于现在的编译方面实践与研究,随着Lex(Lexical Analyzar 词法分析生成器)、Yacc(Yet Another Compiler Compiler 编译器代码生成器)等工具的出现以及编译原理方面研究更加完善,编译器开发的难度被减低许多,在编译方面的研究不断取得进展的时候,笔者希望能通过学习和利用一下诸多学术前辈的先进理论和实践成果实现一个自己的迷你C 编译器,来帮助自己的认知提升。

综上,笔者只是一个编译方面的初学者,进行这次研究学习的主要目的就是为了丰富自己对编译的认知,提高自己的实践和学习能力,同时瞻仰一下前辈们在编译方面取得的先进成果。

  1. 国内外同类研究概况(不低于800字)

编译器从早期的Fortran语言编译器一直进化到今日的如Visual Studio系列、Intellij Idea系列等著名编译器,这个结果是诸多理论人员和工程师智慧的结晶。从lex/yacc在IBM公司诞生到Bison的出现,不断有新的成果被应用到编译器开发中。以及著名的GCC(GNU C Complier)编译器: GCC是FSF发起人RichardM. Stallman于1987年3月 22日首次发布的可移植的优化编译器,高度可移植性和代码优化质量是其最大的特点,自应用到unix系统后,便凭借着GNU计划的优势,跻身成为最优秀的C编译器。

在对于编译原理上,现在更多是运用这项技术来创造新的价值,如我们可以通过编译技术,实现自己独特的一门语言,然后用这门语言来实现其他语言“不擅长”的事情,如 2004年南昌大学就有关于实现数控线切割的加工程序编译器,其借助于lex/yacc重新定义了一门适合开放式数控系统的语言,不仅可以缩短开发周期, 而且生成的代码易于修改和扩充, 符合发展开放式数控系统的要求 。

2019年4月,华为首次公开了自主研发的方舟编译器,同年8月31日华为开源了方舟编译器的框架代码。“方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件”,华为方舟编译器是为安卓机型设计的一款高性能编译器,其通过高效的回收机制和应用级的编译优化使EMUI 9.1仅仅对系统组件system Server应用了华为《方舟编译器》后, 就带来了系统操作流畅度提升24%, 系统响应性能提升44%的收益。由此可见,编译方面的学术及应用从未停止过,也不停的有新的技术、编译器诞生,笔者自身的能力十分有限,学习现有的编译知识已经十分吃力,缺乏进一步研究的能力,于是仅是针对现有理论做一些力所能及的实践,扩充自身的知识储备。

  1. 研究内容及计划(不低于500字)

本次设计最终目的是设计一个功能删减的C 迷你语言编译器,其主要功能有:词法分析、语法分析、语义分析等;对于词法分析和语法分析,基于已经在假期进行了一部分的基础知识学习并且已经进行到了语法分析部分,在正式开学以后,计划先进行词法分析和语法分析的代码学习,然后学习并借助lex/yacc或者ANTLR工具实现词法、语法分析部分功能。词法和语法分析部分对比于C语言的小型编译器,还需要增加一些C 特有的文法、符号和关键字,比如C 中特有的类定义等,但是基于笔者能力,会针对文法做一些适当的删减,比如类定义中的子类、友类等。文法确定以后,需要对文法进行去除左递归、消除回溯操作,在上述工作完成以后,进行词法分析程序的初步设计;语法分析部分计划使用LL(1)型文法,自上而下分析,因为这类文法更适合用于编程设计。语义分析及后续部分待词法和语法分析完成后,再进行研究。

针对时间规划,初步设想在理论基础做好以后,半个个月内做出词法分析和语法分析的程序并完善,然后交由指导老师确认并进行进一步的修改,随后再进行语义分析及后续内容,后续内容会根据个人能力和时间再确认,初步估计为一个月左右。

  1. 特色创新(不低于200字)

基于基础的编译原理理论,研究Mini-C 编译器,选择C 语言的子集进行实现,笔者在实际设计时会参照C语言和C 语言的异同,以C语言面对过程的特性为基础,扩展出C 面对对象与面对过程兼备的特性。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。