- 5
- 0
- 约6.29千字
- 约 8页
- 2020-07-02 发布于天津
- 举报
实用标准文案
《编译原理》课程
实验报告
题目 用递归下降法进行表达式分析
专业
班级
学号
一 . 实验题目姓名
用递归下降法进行语法分析的方法
二 . 实验日期
三 . 实验环境(操作系统,开发语言)
操作系统是 Windows
开发语言是 C 语言
四. 实验内容(实验要求)
词法分析程序和语法分析程序已经提供。 此语法分析程序能够实现: 正确的
输入可以给出结果。例:输入表达式串为: (13+4)*3 则应给出结果为 51。
要求:
(1)读懂源代码,理解内容写入实验报告(语法分析及语法分析程序和词法分
析程序的接口)
(2)把语法分析中使用的 yyval ,用 yytext 实现。
(3)在语法分析程序用加入出错处理(尽量完整,包括出错的位置,出错的原
文档大全
实用标准文案
因,错误的重定位)
五 . 实验步骤
1. 生成 lex.yy.c 文件:
将已给的 mylexer.l 文件打开,先理解,然后再在 DOS环境下用 flex 运行
此文件,这时会生成一个 lex.yy.c 文件。
2. 创建工程:
打开 C-Free 5.0( 注:用 C-Free 4.0 会出错 ) ,在菜单栏中的 “工程(project )”
菜单下选择 “新建”;在新建工程中选择 “控制台程序”,添加工程名字为 “myleb”
和保存位置后点 “确定”;第 1 步选择 “空的程序”点 “下一步”;第 2 步再点 “下
一步”;最后点击“完成” 。
3. 在创建的工程中添加文件:
在 Source files 文件夹中添加之前生成的 lex.yy.c 文件和 syn.c 文件,
然后找到 parser.h 文件,将其添加到新建工程中的 Header files 文件夹中,这
时就能将三个文件组成一个类似于 .exe 文件类型的文件,最后运行。如图:
4. 理解并修改 syn.c 文件:
首先,将 num = yyval.intval 修改成 num = atoi(yytext) ;将 num =
yyval.fval 修改成 num= atof(yytext) 。可以这样修改的原因:在 .l 文件中所
写的规则中,有{DIGIT}+ { yyval.intval = atoi(yytext);return INTEGER;}
和{DIGIT}+.{DIGIT}* {yyval.fval = atof(yytext); return DOUBLE; } 这
两句代码,其中 yyval.intval = atoi(yytext) 和 yyval.fval = atof(yytext)
就说明两者可以相互替代。
然后,反复修改 F() 函数(可将printf() 带入其中调试),修改“case LPAREN:”
和 “default: ”中的部分,使这段代码即可检测出缺少 ‘(’又可检测出缺少 ‘)’
文档大全
实用标准文案
以及“) (”(右括号在前)或是括号中没有数字的情况。
最后,综合理解 double E();double F();void S();double T(); 四个函数
以及运用“ extern VAL yyval; ”这样的语句使此代码可运用其他文件中的变量,
如*yy
原创力文档

文档评论(0)