实验1:用lex构造c子集词法分析器

实验1:用lex构造c子集词法分析器

ID:13669576

大小:268.00 KB

页数:8页

时间:2018-07-23

实验1:用lex构造c子集词法分析器_第1页
实验1:用lex构造c子集词法分析器_第2页
实验1:用lex构造c子集词法分析器_第3页
实验1:用lex构造c子集词法分析器_第4页
实验1:用lex构造c子集词法分析器_第5页
资源描述:

《实验1:用lex构造c子集词法分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告实验项目名称:用lex构造c子集词法分析器学时:2学时一.实验目的和要求用lex构造c子集词法分析器,能实现识别c子集源程序的单词序列。二.实验环境VC/tcdos三.实验过程A:lex使用方法1在“运行“中输入:cmd进入dos环境2进入LEX所在文件夹。(cd命令若LEX在f盘根目录下>f:>cdlex3LEX使用步骤:(直接在屏幕显示词法分析结果,不保留的)1、编写LEX源程序,如“1.L”,将“1.L”与FLEX.EXE保存在同一文件夹下。2、进入DOS环境FLEX.EXE所在文件夹,运行FLEX.EXE程序。ØFLEX1.L3、运行FLEX后,产生“LEXY

2、Y.C”程序4、用VC打开“LEXYY.C”程序,编译后产生“LEXYY.EXE”程序。5、进入DOS环境“LEXYY.EXE”所在文件夹,编写1.c程序,运行“LEXYY.EXE”程序。>LEXYY.EXE1.c的结果。1.L源程序:实现功能将所有小写字母转换成大写。%{#include%}%%[a-z]printf("%c",yytext[0]+'A'-'a');%%main(argc,argv)intargc;char**argv;{++argv,--argc;/*skipoverprogramname*/if(argc>0)yyin=fopen(ar

3、gv[0],"r");//yyin存放LEXYY的输入源程序elseyyin=stdin;++argv,--argc;/*skipoverinputname*/if(argc>0)yyout=fopen(argv[0],"w");//yyout存放LEXYY的输出程序elseyyout=stdout;yylex();}intyywrap(){return1;}B:构造c子集词法分析器1、编写c子集的LEX源程序,如“lex.L”,将“lex.L”与FLEX.EXE保存在同一文件夹下。2、运行FLEX.EXE程序。3、运行FLEX后,产生“LEXYY.C”程序4、用VC打开“L

4、EXYY.C”程序,编译后产生“LEXYY.EXE”程序。5、编写一个c子集源程序A.c(每个人的源程序不相同)main(){inta;realb;a=2*32;b=3.124;}运行“LEXYY.EXE”程序。>LEXYY.EXEA.c看词法分析的结果。四实验结果将词法分析的结果抄到实验报告五:错误分析由于该词法分析程序是分析c子集,case等关键字不能识别,字符型不能识别,部分运算符号和界符不能识别。编写c源程序需注意c子集范围。Lex1.L源程序:%{#include#ifndefFALSE#defineFALSE0#endif#ifndefTRUE#

5、defineTRUE1#endif%}digit[0-9]number{digit}+letter[a-zA-Z]identifier{letter}+newline[]whitespace[t]+%%"main"printf("baoliuzi:%s",yytext);"if"printf("baoliuzi:%s",yytext);"else"printf("baoliuzi:%s",yytext);"for"printf("baoliuzi:%s",yytext);"while"printf("baoliuzi:%s",yytext);"do"

6、printf("baoliuzi:%s",yytext);"int"printf("baoliuzi:%s",yytext);"="printf("yunsuanfu:%s",yytext);"+"printf("yunsuanfu:%s",yytext);"-"printf("yunsuanfu:%s",yytext);"*"printf("yunsuanfu:%s",yytext);"/"printf("yunsuanfu:%s",yytext);"<"printf("yunsuanfu:%s",yytext);">"printf("yun

7、suanfu:%s",yytext);"("printf("jiefu:%s",yytext);")"printf("jiefu:%s",yytext);"["printf("jiefu:%s",yytext);"]"printf("jiefu:%s",yytext);"{"printf("jiefu:%s",yytext);"}"printf("jiefu:%s",yytext);";"printf("jiefu:%s",yytext);":"printf("jiefu

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

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

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