编译原理用递归下降法进行表达式分析报告实验报告材料.pdfVIP

  • 5
  • 0
  • 约6.29千字
  • 约 8页
  • 2020-07-02 发布于天津
  • 举报

编译原理用递归下降法进行表达式分析报告实验报告材料.pdf

实用标准文案 《编译原理》课程 实验报告 题目 用递归下降法进行表达式分析 专业 班级 学号 一 . 实验题目姓名 用递归下降法进行语法分析的方法 二 . 实验日期 三 . 实验环境(操作系统,开发语言) 操作系统是 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)

1亿VIP精品文档

相关文档