基于给定文法的编译器设计与实现开题报告
2022-01-14 21:01:49
全文总字数:2296字
1. 研究目的与意义及国内外研究现状
信息技术的根在于软件,而软件则必须由编译器生成。对编译器的深入研究不仅是将软件的主动权掌握在自身,其背后所运用的深刻数学原理和相关技术亦深远地影响着信息技术的其他领域。国内外研究现状
虽然从乔姆斯基提出文法分类以来,编译器已经经历了70年的风风雨雨,但目前编译器所使用的理论,结构依然是三四十年前的那一套。上下文无关文法在70年代就已经成熟,之后面向对象思想的提出,又使编译器前进一步。而到了90年代java编译器创造性地引入了垃圾回收机制,使编译器不再只专注于翻译本身。同时由于编译器优化的需求,推动了从RISC向CISC的转变。目前对编译器的主要研究有:多核处理器、复杂软件系统的可靠性、过程间分析等。对编译器优化的研究主要集中在机器无关优化,针对特定机器的优化的研究十分有限。
当前编译器主要面向特定语言,即一语一编。虽然GCC编译器族群能对多种语言编译,但是它们是以独立的组件形式存在,相当于只做了一个集成。目前还不存在一种通用的编译器,能以同一核心对任意语言编译并输出至任意目标语言。
2. 研究的基本内容
本文主要针对编译器的前端也就是分析部分展开研究。首先讨论前端的第一部分,词法分析。词法分析使用了正则表达式、状态转换图、有穷自动机(dfa和nfa)等技术,本文在介绍这些技术的同时,也会给出相应的算法实现。事实上,针对现有的程序设计语言做词法分析基本上没有技术难题。因为描述这些程序设计语言的文法通常是精心构造的,其生成的语言集(词法集)相对简单。故本文着重讨论的是前端的第二部分,语法分析。现有的语法分析技术主要有ll,lr0,slr,lr1,lalr等。在使用这些技术之前,文法本身固有的左递归问题和first集follow集生成问题同样值得注意。特别地,本文针对以下几个问题,提出了改进的高效算法:
1.对含有左递归的文法直接生成first集和follow集
2.随机文法生成
3. 实施方案、进度安排及预期效果
在4月中旬发表一篇相关的小论文
在4月底左右写完毕业论文
在5月中旬做好设计
4. 参考文献
[1] ahoa, ravisethi, ullman j. compilers: principles, techniques, and tools[m]//compilers, principles, techniques, and tools /. addison-wesley pub. co. 2002.
[2] johnmccarthy j p . correctness of a compiler for arithmetic expressions[j]. proc.sympos. appl. math. vol. xix, 1967:33--41.
[3] 张晓曈, 何炎祥. 一种适用于可信编译器的源语言转换与检查框架[j].中国科技论文, 2017(14):85-89.