编译原理报告(6)

编译原理报告(6)

ID:30339140

大小:778.72 KB

页数:12页

时间:2018-12-29

编译原理报告(6)_第1页
编译原理报告(6)_第2页
编译原理报告(6)_第3页
编译原理报告(6)_第4页
编译原理报告(6)_第5页
资源描述:

《编译原理报告(6)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.词法分析1.1实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1.2实验要求1.待分析的简单语言的词法(1)关键字:beginifthenwhiledoend所有的关键字都是小写(2)运算符和界符::=+-*、<<=<>>>==;()#(3)其他单词是标识符(ID)和整形常数(NUM),通过以下正规式定义:ID=letter(letter

2、digit)*NUM=digitdigit*(4)空格由空白、制表符和换行符组成。空格一般用来分隔ID,NUM、运算符、界符、和关键字,词法分析阶段通常被忽略。2.各种单词符号对应的种别码表

3、1各种单词符号对应的种别码单词符号种别码begin1if2then3while4do5end6letter(letter

4、digit)*10digitdigit*11+13-14*15/16单词符号种别码:17:=18<20<>21<=22>23>=24=25;26(27)28#02.词法分析程序的功能输入:所给文法的源程序字符串输出:二元组(syn,token或sum)构成的序列。其中syn为单词的种别码;token为存放的单词自身字符串;sum为整型常量。例如:源程序beginx:=9;ifx>0thenx:=2*x+1/3;end#的源文件,经

5、词法分析后输出序列如下:(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)...1.3语法分析的程序设计思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描的单词符号的第一个字种类,拼出相应的单词符号。1.主程序示意图主程序示意图如图1所示。其中初值包括如下两个方面。(1)关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(成为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述

6、如下:char*rwtab[6]={“begin”,”if”,”then”,”while”,”do”,”end”};(2)程序中需要用到的主要变量为syn,token和sum.2.扫描子程序的算法思想首先设置3个变量,1.token用来构成单词符号的字符串;2.sum用来存放整形单词3.syn用来存放单词符号的种别码。扫描子程序的主要流程部分如图2所示。图1词法分析主程序示意图图2.词法分析程序流程1.4函数与使用说明charinput[255];/*输入缓冲区*/chartoken[255]="";/*单词缓冲区*/intp_input;/*输入缓

7、冲区指针*/intp_token;/*单词缓冲区指针*/charch;/*当前读入字符*//*可扩充的关键数组*/char*rwtab[]={"begin","if","then","while","do","end",_KEY_WORD_END};typedefstruct/*单词二元组的结构,可以根据需要继续扩充*/{inttypenum;char*word;}WORD;WORD*scaner();/*词法扫描函数,获得一个单词*/charm_getch();/*需要用到的自编函数从缓冲区读取的一个字符到ch中*/voidgetbc();/*去掉

8、空白符号*/voidconcat();/*拼接单词*/intletter();/*判断是否是字母*/intdigit();/*判读是否为数字*/intreserve();/*检索关键字表格*/voidretract();/*回退一个字符*/1.5实验与体会本实验首先要求输入源程序存入到输入缓冲区中。然后不断地读取源程序。根据构成规则,标识符必须是以字母开头的,即ID=letter(letter

9、digit)*。则在scaner函数的匹配规则中,当其判断是否为标识符,会首先判断读入的第一个字符,如果其为字母,则继续判断直至把该字符串读取完毕,直至读取的

10、字符不为字母或数字,则读取完毕,然后对其与单词符号进行匹配,确定其为关键字还是标识符。匹配结束,退回一个字符。这样每次再进行匹配时都需要读入一个新字符,起点相同。若是第一次读入的是数字,则下次匹配的只能是数字,当读入的不是数字时,退回一个字符,确定读入的字符串为数字。然后重新匹配。其他的会根据事先约定好的算符进行匹配。在这里仅有词法的分析,机械性的匹配,所以当出现“123abc234”时,匹配的字符串为两个,“123”和“abc234”。1.6程序执行结果图3运行结果图4运行结果2.语法分析2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所

11、提供的单词序列的语法检查和结构分析。2.2实验要求利用C语言编制的递归下降分析程序,并对简单语言进行语法分析

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

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

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