编译程序实验指导书

编译程序实验指导书

ID:35154088

大小:190.50 KB

页数:25页

时间:2019-03-20

编译程序实验指导书_第1页
编译程序实验指导书_第2页
编译程序实验指导书_第3页
编译程序实验指导书_第4页
编译程序实验指导书_第5页
资源描述:

《编译程序实验指导书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、编译程序实验指导书实验目的:用C语言对一个C语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。1.词法分析1.1实验目的设计、编制并测试一个词法分析程序,加深对词法分析原理的理解。1.2实验要求1.2.1待分析的C语言子集的词法1.关键字mainifelseintcharforwhile所有的关键字都是小写。2.专用符号=+-*/<<=>>===!=;:,{}[]()3.其他标记ID和NUM通过以下正规式定义其他标记:ID→letter(letter

2、digit)*NUM→digitdigit*letter→a

3、…

4、z

5、A

6、…

7、Zdigit→0

8、…

9、

10、9…4.空格由空白、制表符和换行符组成空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。1.2.2各种单词符号对应的种别码表1各种单词符号的种别码单词符号种别码单词符号种别码单词符号种别码main1=21,32int2+22:33char3-23;34if4*24>35else5/25<36for6(26>=37while7)27<=38ID10[28==39MUN20]29!=40{30‘’1000}31ERROR-11.2.3词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中,.syn为单词种别码。.T

11、oken为存放的单词自身字符串。.Sum为整型常量。具体实现时,可以将单词的二元组用结构进行处理。例如,对源程序main(){inti=10;while(i)i=i-1;}的源文件,经词法分析后输出如下序列:(1,main)(26,()(27,))(30,{}(2,int)(10,i)(21,=)(20,10)(34,;)(7,while)(26,()(10,i)(27,))(10,i)(21,=)(10,i)(23,-)(20,1)(34,;)(31,))1.3词法分析程序的主要算法思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到的单词符号的

12、第一个字符的种类,拼出相应的单词符号。1.主程序示意图主程序示意图如图1所示。置初值调用扫描子程序输出单词二元组输入串结束结束否是图1词法分析主程序示意图其中初值包括如下两方面:(1)关键字表初值关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:char*KEY_WORDS[8]={“main”,”int”,”char”,”if”,”else”,”for”,”while”};为分析方便,这里把main作关键字处理。(2)程序中需要用到的主要

13、变量:syn,token和sum。2.扫描子程序的算法思想首先设置三个变量:token用来存放构成单词符号的字符串;sum用来存放整型单词;syn用来存放单词符号的种别编码。扫描子程序主要部分流程如图2所示。变量初始化忽略空格是是否文件结束返回否其他符号运算符,界符等符号字母数字否对不同符号给出相应的syn值是否关键字是Syn为对应关键字的单词种别码返回报错拼数拼字符串Syn=10Syn=11图2词法分析程序流程2.语法分析2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。2.2实验要求利用C语言编制递归下降分析程序,并对C语言的简单子集进行

14、分析。2.2.1待分析的C语言子集的语法用扩充的BNF表示如下:(1)<程序>∷=main()<语句块>(2)<语句块>∷=’{’<语句串>’}’(3)<语句串>∷=<语句>{;<语句>};(4)<语句>∷=<赋值语句>

15、<条件语句>

16、<循环语句>(5)<赋值语句>∷=ID=<表达式>(6)<条件语句>∷=if(<条件>)<语句块>(7)<循环语句>∷=while<条件><语句块>(8)<条件>∷=<表达式><关系运算符><表达式>(9)<表达式>∷=<项>{+<项>

17、-<项>}(10)<项>∷=<因子>{*<因子>

18、/<因子>}(11)<因子>∷=ID

19、NUM

20、(<表达式>)(12)<关

21、系运算符>∷=<

22、<=

23、>

24、>=

25、==

26、!=2.3语法分析程序的算法思想(1)主程序示意图如图3所示。置初值调用scaner读下一个单词符号调用lrparser结束图3语法分析主程序示意图(2)递归下降分析程序示意图如图4所示。lrparser否否是否单词串main()是调用scaner出错处理调用语句块分析函数否源程序是否结束是打印分析成功图4递归下降分析程序示意图(1)语句块分析过程示意图如图5所示。否是否{是调用s

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

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

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