编译原如理 实验三.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实 验 报 告 第 2 组 专业__软件工程__ 班级____3____ 学号_123012012095、94、101、103______ _ 姓名 吴艺萍、陈璐、崔旻、刘超群 实验日期: 2014 年 3 月 20 日 报告退发 (订正 、 重做) 课程 实验名称 递归下降的预测分析 一、实验目的 1. 学会用语法图来形式化地描述一门简单的语言; 2. 掌握递归下降的预测分析; 3. 掌握词法分析。 二、实验环境 Visual Studio 或 GCC 或Eclipse 三、实验内容、步骤和结果分析 实验内容: 请基于递归下降的分析方法(教材P55页),编写一个“语法图.doc”所对应语言的语法分析器。该语法分析器能读入一个源代码文件(如“test.c”文件所示),并判断其中的源代码是否符合“语法图.doc”的规定。如果符合,打印出Yes;如果不符合,打印出No。(所用编程语言不限) 四、讨论 (说明实验过程中遇到的问题及解决办法;未解决/需进一步研讨的问题或建议新实验方法等) //lab3.h #include stdio.h #include stdlib.h #include string.h //变量名的最大长度 #define MAX_ID_LEN 20 //记号struct Token{ int type; int value; char id[MAX_ID_LEN+1]; }; static bool real = true; //判断是否合法extern Token token; //当前记号char fromFile(); //从file中提取字符 //记号类型¨enum TokenType { OR , //或¨ AND, //与 RELOP, //关系运算符 ADDOP, //加减 MULOP, //乘除 NOT, //非 LP, //左括号 RP, //右括号 ID, //标志符 NUM, //数 ASSIGN, //赋值 LB, //左大括号 RB, //右大括号 COMMA, //逗号 SEMICOLON, //分号 UNDEFINED, //未定义 INT, //int IF, //if ELSE, //else WHILE, //while RETURN, //return PRINT, //printf SCANF, //scanf BOOL, //bool TRUE, //true FALSE, //false }; enum AddType{ ADD, //加法 SUB //减法}; // enum MulType{ MUL, //乘法 DIV, //除法}; //标识符类型enum IdType{ FUN, //函数 VAR //变量}; Token getToken(); void match(int t); //expression void expr(); void term(); void factor(); void syntaxError(char * info); //statement void statement(); void ifStatement(); void whileStatement(); void printStatement(); void lpStatement(); void idStatement(); //program void definition(); void program(); //main.cpp #include fstream #includeiostream #includelab3.h using namespace std; //从字符串读入源代码char * filename = D:\\test.c; //从文件读入源代码FILE * infile = fopen(filename,r); char fromFile(){ return fgetc(infile); //fgetc:文件中读取一个字符,读取一个字节后,光标位置后移一个字节} void parse(){ token = getToken(); //词法分析 pr

文档评论(0)

zzabc001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档