编译原理课程设计实验报告1

上传人:tia****nde 文档编号:36881433 上传时间:2018-04-03 格式:DOCX 页数:9 大小:96.48KB
返回 下载 相关 举报
编译原理课程设计实验报告1_第1页
第1页 / 共9页
编译原理课程设计实验报告1_第2页
第2页 / 共9页
编译原理课程设计实验报告1_第3页
第3页 / 共9页
编译原理课程设计实验报告1_第4页
第4页 / 共9页
编译原理课程设计实验报告1_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《编译原理课程设计实验报告1》由会员分享,可在线阅读,更多相关《编译原理课程设计实验报告1(9页珍藏版)》请在金锄头文库上搜索。

1、中中 国国 海海 洋洋 大大 学学 实实 验验 报报 告告 姓名:姓名:邓汇星 专业年级:专业年级:2012 级计算机 学号:学号:12020031016 同组人:同组人: 窦猛 专业年级:专业年级:2012 级计算机 学号:学号:12020031020 编译原理课程设计实验报告编译原理课程设计实验报告【实验题目实验题目】:实验实验 1:用:用 LexLex 设计词法分析器设计词法分析器 1 1【实验目的实验目的】:学会用学会用 lex 设计一个词法分析器。设计一个词法分析器。【实验内容实验内容】:使用使用 lex 为下述文法语言写一个词法分析器。为下述文法语言写一个词法分析器。语言文法: P

2、ROGRAM ; BEGIN END. VAR ; : | : ; INTEGER | REAL | , | ; | | | := IF THEN ELSE WHILE DO BEGIN END | + | - | * | / | | () | | | | . | . | =| “ return (RELOP); “ return (RELOP); “=“ return (RELOP); “:=“ return (RELOP); “;“return (fenhao); “,“ return (douhao); “:“ return (maohao); “+“ return (jiahao);

3、“-“ return (jianhao); “*“ return (chenghao); “/“ return (chuhao); “.“ return (dian); . return ERRORCHAR;%int yywrap ()return 1; void writeout(int c)switch(c)case ERRORCHAR: fprintf(yyout, “(ERRORCHAR, “%s“) “, yytext);break;case RELOP: fprintf(yyout, “(RELOP, “%s“) “, yytext);break; case WHILE: fpri

4、ntf(yyout, “(WHILE, “%s“) “, yytext);break;case DO: fprintf(yyout, “(DO, “%s“) “, yytext);break;case NUMBER: fprintf(yyout, “(NUM, “%s“) “, yytext);break;case ID: fprintf(yyout, “(ID, “%s“) “, yytext);break;case NEWLINE: fprintf(yyout, “n“);break; case _PROGRAM: fprintf(yyout,“(PROGRAM)“);break;case

5、 _BEGIN: fprintf(yyout,“(BEGIN)“);break; case _VAR: fprintf(yyout, “(VAR)“, yytext); break; case _INTEGER: fprintf(yyout, “(INTEGER)“, yytext); break; case _REAL: fprintf(yyout, “(REAL)“, yytext); break; case _END: fprintf(yyout, “(END)“, yytext); break; case _THEN: fprintf(yyout, “(THEN)“, yytext);

6、 break; case maohao:fprintf(yyout, “(maohao)“, yytext); break; case fenhao: fprintf(yyout, “(fenhao)“, yytext); break; case douhao: fprintf(yyout, “(douhao)“, yytext); break; case jiahao: fprintf(yyout, “(jiahao)“, yytext); break; case chuhao: fprintf(yyout, “(chuhao)“, yytext); break; case dian: fp

7、rintf(yyout, “(dian)“, yytext); break; case chenghao: fprintf(yyout, “(chenghao)“, yytext); break; case janhao: fprintf(yyout, “(janhao)“, yytext); break; case _ELSE: fprintf(yyout, “(ELSE)“, yytext); break;default:break; fprintf(yyout, “n“);return; int main (int argc, char * argv) int c,j=0; if (ar

8、gc=2)if (yyin = fopen(argv1, “r“) = NULL)printf(“Cant open file %sn“, argv1);return 1;if (argc=3)yyout=fopen(argv2, “w“); while (c = yylex() writeout(c); j+; if (j%5 = 0) writeout(NEWLINE); if(argc=2)fclose(yyin);if (argc=3) fclose(yyout); return 0; 【实验心得实验心得】 通过本次实验,我们学会了在 cygwin 下用 flex 编译程序,并成功写了一个词法分析器能够 对实验要求中给出的测试样例进行正确无误的词法分析。这使得我们进一步学会用 lex 来 写词法分析器,也让我们对编译原理课上所学关于词法分析器的部分有了更为深刻的认识 和理解。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号