- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C语言编译器的设计与实现
01计算机4班18号任春妍2号陈俊我们设计的编译程序涉及到编译五个阶段中的三个,即词法分析器、语法分析器和中间代码生成器。
编译程序的输出结果包括词法分析后的二元式序列、变量名表、状态栈分析过程显示及四元式序列程序,整个编译程序分为三部分:
词法分析部分
语法分析处理及四元式生成部分
输出显示部分
一.词法分析器设计
由于我们规定的程序语句中涉及单词较少,故在词法分析阶段忽略了单词输入错误的检查,而将编译程序的重点放在中间代码生成阶段。词法分析器的功能是输入源程序,输出单词符号。我们规定输出的单词符号格式为如下的二元式:(单词种别,单词自身的值)
#defineACC
-2
#definesyl_if
0
#definesyl_else
1
#definesyl_while
2
#definesyl_begin
3
#definesyl_end
4
#definea
5
#definesemicolon
6
#definee
7
#definejinghao
8
#defines
9
#defineL
10
#definetempsy
11
#defineEA
12
#defineEO
13
#defineplus
14
#definetimes
15
#definebecomes
16
#defineop_and
17
#defineop_or
18
#defineop_not
19
#definerop
20
#definelparent
21
#definerparent
22
#defineident
23
#defineintconst
24
函数说明
读取函数readline()、readch()
词法分析包含从源文件读取字符的操作,但频繁的读文件操作会影响程序执行效率,故实际上是从源程序文件”source.dat”中读取一行到输入缓冲区,而词法分析过程中每次读取一个字符时则是通过执行readch()从输入缓冲区获得的;若缓冲区已被读空,则再执行readline()从source.dat中读取下一行至输入缓冲区。
扫描函数scan()
扫描函数scan()的功能是滤除多余空格并对主要单词进行分析处理,将分析得到的二元式存入二元式结果缓冲区。
变量处理find()
变量处理中首先把以字母开头的字母数字串存到spelling[]数组中,然后进行识别。识别过程是先让它与保留关键字表中的所有关键字进行匹配,若获得成功则说明它为保留关键字,即将其内码值写入二元式结果缓冲区;否则说明其为变量,这时让它与变量名表中的变量进行匹配(变量匹配函数find
()),如果成功,则说明该变量已存在并在二元式结果缓冲区中标记为此变量(值填为该变量在变量名表中的位置),否则将该变量登记到变量名表中,再将这个新变量存入二元式缓存数组中。
数字识别number()
数字识别将识别出的数字填入二元式结果缓存数组。
显示函数
显示函数的功能在屏幕上输出词法分析的结果(即二元式序列程序),同时给出二元式个数及源程序行数统计。
二.语法分析器设计
语法分析器的核心是三张SLR分析表以及针对这三张SLR分析表进行语义加工的语义动作。编译程序中语法分析处理及四元式生成部分主要是以二元式作为输入,并通过SLR分析表对语法分析处理过程进行控制,使四元式翻译的工作有条不紊的进行,同时识别语法分析中的语法错误。在处理if和while语句时,需要进行真值或假值的拉链和返填工作,以便转移目标的正确填入。
控制语句的SLR分析表1设计过程如下:将扩展文法G’
0)S’?S
1)S?ifeSelseS2)S?whileeS3)S?{L}
4)S?a;
5)L?S
6)L?SL
用∈_CLOSURE方法构造LR(0)项目规范簇为:I0:S’?·S
S?·ifeSelseS
S?·whileeSS?·{L}
S?·a;
I1: S’?S·
I2: S?if·eSelseSI3: S?while·eSI4: S?{·L}
L?·SL?·SL
S?·ifeSelseSS?·whileeS
S?·{L}S?·a;
I5: S?a·;
I6: S? ife·SelseSS?·ifeSelseSS?·whileeS
S?·{L}S?·a;
I7: S?whilee
您可能关注的文档
- cass断面法土方计算详细步骤.docx
- CATIA拆装分析Fit分析和总结.docx
- CATIA试卷分析和总结.docx
- CBN材料的性能分析和总结.docx
- CBT树脂基体改性研究.docx
- CDALevel1模拟题分析和总结.docx
- CFG桩施工方案 分析和总结.docx
- CFG桩施工组织设计方案.docx
- CFP练习题分析和总结.docx
- CFRP螺旋铣孔过程工艺研究及切削参数优化.docx
- 深度解析(2026)《ISO 22002-12025食品安全前提方案—第1部分:食品制造》.pptx
- 深度解析(2026)《ISO 22002-52025食品安全前提方案—第5部分:运输和储存》.pptx
- 深度解析(2026)《ISO 22002-42025 食品安全前提方案 — 第4部分:食品包装制造》.pptx
- 徒步活动策划方案.doc
- 深度解析(2026)《ISO 22002-62025食品安全前提方案—第6部分:饲料及动物食品生产》.pptx
- 2026年新版郯城期末真题卷.doc
- 深度解析(2026)《ISO 22476-72012岩土工程勘察与测试 — 现场测试 — 第7部分:钻孔千斤顶试验》.pptx
- 深度解析(2026)《ISO 22090-22014 船舶与海洋技术 — 航向传送装置(THD) — 第2部分:地磁原理》.pptx
- 深度解析(2026)《ISO 23584-22012 光学和光子学 — 参考字典规范 — 第 2 部分:类与特性定义》:构建智能制造数据基石的专家视角与未来展望.pptx
- 深度解析(2026)《ISO 22932-92025 Mining — Vocabulary — Part 9 Drainage》:构建未来矿山“水脉”治理与可持续发展的新语言体系.pptx
最近下载
- 五年级数学上册用简便方法计算复习(共24张PPT).pptx VIP
- 大学英语四级强化知到智慧树期末考试答案题库2024年秋哈尔滨理工大学.docx VIP
- 2023年税务师继续教育题库及完整答案【夺冠系列】.docx
- 天津市南开区2020-2021学年五年级上学期数学期末试卷.docx VIP
- 证券从业之证券市场基本法律法规考试题库(考点梳理).docx
- 环境影响评价工程师之环评法律法规题库及参考答案【精练】.docx
- 2023年税务师继续教育题库附答案(基础题).docx
- 金庸群侠传x技能_奥义.xls VIP
- 2023年税务师继续教育题库(历年真题)word版.docx
- 2023年国家公务员考试题库含完整答案【夺冠】.docx
原创力文档


文档评论(0)