编译原理_词法分析实验.doc

编译原理_词法分析实验.doc

ID:52136208

大小:260.50 KB

页数:8页

时间:2020-03-23

编译原理_词法分析实验.doc_第1页
编译原理_词法分析实验.doc_第2页
编译原理_词法分析实验.doc_第3页
编译原理_词法分析实验.doc_第4页
编译原理_词法分析实验.doc_第5页
资源描述:

《编译原理_词法分析实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一.课程设计题目词法分析器的实现二.课程设计成员组长:成员:三•课程设计内容和要求设计一个程序,调试、编译,实现词法分析的功能,识别各单词或字符所属类别,并显示在屏幕上或保存在某个文件中。词法分析器:逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具冇独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。输入:所给C源程序字符串。输出:二元组(syn,token)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;设计要求:1、写出C源程序的单词种类,用正规式对C语言的词

2、法规则进行描述。(1)关键子:int,begin,end,if,then,else,while,write,read等,do,call,const,char,until,procedure,repeat等(2)运算符:”』、y7”,等(3)界限符:""}",”匚丁,”;",”,",气","等(4)标识符:用户自定义的变量名、常数名和过程名TD=letter(letterIdigit)*⑸常量:NUM=digitdigit*2、根据构词规则(词法规则)设计状态转换图3、设计各种单词符号对应的种别码:表2.1各种单词符号

3、对应的种别码单词符号种别码单词符号种别码Int1■•17If2:=18Then3<20wile4<>21do5<=22end6>23lettet(letterldigit)*10>=24dightdight*11=25+13•♦26—14(27*15)28/16#04、词法分析程序的算法思想(流程图)算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。四、算法实现^include#include〈string>u

4、singnamespacestd;^defineMAX22charch二'';stringkeyLlo」=[mt,end,if,then,else,while,write,read,do,call,const,char,until,procedure,repeat);intIskey(stringc){〃关键字判断inti;for(i=0;i

5、&&(c>二'a'))11((c<=‘Z')&&(c>二'A')))return1;elsereturn0;}intIsDigit(charc){〃判断是否为数字if(c>=,0,&&c<=,9")return1;elsereturn0;}voidanalyse(FILE*fpin){stringarr二";wh订e((ch=fgetc(fpin))!=E0F){arr=;if(ch==,'I

6、ch='t'

7、

8、ch=''){}elseif(IsLetter(ch)){wh订e(IsLetter(ch)

9、

10、IsD

11、igit(ch)){if((ch<='Z')&&(ch>=,A'))ch二ch+32;arr=arr+ch;ch=fgetc(fpin);}fseek(fpin,-IL,SEEK_CUR);if(Iskey(arr)){cout«arr«*t$属于关键字*«endl;}elsecout«arr«*t$属于普通标识符"<

12、

13、ch='・'A&IsDigit(fgetc(fpin))){arr=arr+ch;ch=fgetc(fpi

14、n);}fseek(fpin,-IL,SEEK_CUR);cout«arr«*t$属于无符号实数*«endl;}elseswitch(ch){case*+':case一:case,:case'=':case*r:cout«ch«*t$属于运算符"<

15、;if(ch==,二')cout«":二"<<"t$属于运算符"<':{ch=fgetc(fpin);if(ch==,二')cout«">二"<<"t$属于运算符"<

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

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

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