欢迎来到天天文库
浏览记录
ID:35031425
大小:4.74 MB
页数:95页
时间:2019-03-16
《c编译器语法分析的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、....UNIVERSITYOFELECTRONICSCIENCEANDTECHNOLOGYOFCHINAS专业学位硕±学位论文MASTERTHESISFORPROFESSIONALDEGREE产—l/皆■it%II—一t嚷iIm论文题目.c编译器语法分析的设计与实现'专业学位类别工程硕±-■■■■-■■■■I.学号.201322060516?、——化者姓名徐金光指导教师李毅教授—' ̄ ̄
2、1-—..LJ-■’裝运奋社W早■JI--]———-r:*I二独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加W标注和致谢的地方夕h论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。:作者签名日期年((月日论文使用授权本学位论文作者完全了解电子
3、科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部口或机构送交论文的复印件和磁盘,允许论文被查和借阅。本人授电子科技大学可W将学位论文的全阅、部分内容编入有关数据库,可^采缩印描部或进行检索(用影印或扫、等复制手段保存汇编学位论文。(论文在解密后应遵)保密的守此规定学位签:作者名导:寺师签名ijJ妓會今^:^曰期0年月曰/>^分类号密级注1UDC学位论文C编译器语法分析的设计与实现(题名和副题名)徐金光(作者姓名)指导教师李毅教授电子科技大学成都(姓名、职称、单位名称)申请学位级别
4、硕士专业学位类别工程硕士工程领域名称计算机技术提交论文日期2016.3.28论文答辩日期2016.5.18学位授予单位和日期电子科技大学2016年6月答辩委员会主席评阅人注1:注明《国际十进分类法UDC》的类号。TheDesignandImplementationoftheCCompilerGrammarAnalysisAMasterThesisSubmittedtoUniversityofElectronicScienceandTechnologyofChinaMajor:MasterofEngineeringAuthor:
5、JinguangXuSupervisor:Prof.LiYiSchool:SchoolofComputerScience&Engineering摘要摘要高级程序设计语言推动了计算机的发展和应用,其中编译器起着举足轻重的作用。编译器是每一个开发人员必须熟悉并应用的首要系统软件。它的设计与实现是个很大的软件工程,其依赖的相关编译原理以及技术也十分复杂;它是计算机科学中理论与实践相结合的完美典范。本文详细设计和实现了C语言编译器的词法分析器和语法分析器,其中语法分析器又分为LR(1)和LL(1)分析法两种语法分析器。在设计与实现C编
6、译器词法分析器中,将C语言文法中的所有终结符号划分为字符串类,数值类和其他符号类,每一类作为独立的模块来设计与实现。在字符串模块中使用了类似有限状态机的方法来解析关键字。词法分析器中字符串存储的实现使用了哈希表和存储区相结合的方式,以单链表形式管理所有的存储区,把字符串存入存储区的地址放入哈希表,并以其哈希值作为索引。设计了词法分析错误处理和缓存区管理。词法分析器将为语法分析器提供扫描符号。首先对语法分析阶段使用的产生式,FIRST和FOLLOW集合进行编码。依据移进-归约的思想,设计了LR(1)语法分析的结构和归约算法。在算
7、法中归约产生式从选候选产生式中匹配筛选,并使用C文法符号的FIRST和FOLLOW集合作为移进和归约的判断条件。然后在这些算法之上创造性的设计了三个数据结构:产生式集合表,符号到产生式集合的映射表和终结符与非终结符表。依靠这些设计实现了LR(1)语法分析器。本文使用递归下降法来实现C编译器的自顶向下语法分析器。从根结点开始,利用FIRST集合选择相应的产生式,FOLLOW集合判断产生式的返回和出错进行语法分析。针对LL(1)语法分析中遇到的产生式左递归,公共左公因子和FIRST集合冲突问题分别以迭代循环右展开,提取公共左公因子
8、先执行和“预扫描-回滚”方法解决。基于以上所有设计与实现,将C语言编译器的词法分析器和语法分析器整合。系统实现了对C89所有文法的语法分析,能够生成源程序的语法树,以及对语法错误的识别和报错。运行结果显示系统所有功能都达到了预期的要求。关键字:C语言,编译器,词法分析,语法分
此文档下载收益归作者所有