网站大量收购闲置独家精品文档,联系QQ:2885784924

词法分析器实验报告.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析器实验报告

词法分析实验报告班级: 姓名: 学号: 实验要求可以识别每个单词符号,并以记号形式输出;识别注释统计字符,单词,行,列数等检查错误并报告位置发现错误修正并恢复程序自动机设计如手写图片。程序源代码//词法分析器 by程闻博 //以下保留字以及运算符取自《C语言核心技术》; //部分位运算符( = =)未列入;//内存定位运算符 * 算作算数运算符;//char * keyword[34] = {auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, printf, union, unsigned, void, volatile, while, main};//保留字 //char * count_op[5] = {+, -, *, /, %};//算数运算符 //char * assignment_op[11] = {=, +=, -=, *=, /=, %=, =, ^=, |=};//赋值运算符 //char * self_op[2] = {++, --};//char * comparison_op[6] = {, =, , =, ==, !=};//比较运算符//char * logic_op[3] = {, ||, !};//逻辑运算符//char * bool_op[4] = {, |, ^, ~};//布尔位运算符//char * getmem_op[5] = {, ., -, [, ]};//内存定位运算符 //char * else_op[5] = {(, ), ?, :, ,};//其他运算符 //char * note[3] = {//, /*, */};//注释//char * sentence[3] = {;, {, }}//语句分割 #include stdio.h #include stdlib.h #include string.h#include ctype.h #include vectorusing namespace std;FILE *fp, *fpo;//文件指针 char curr;//读入的字符 int line, row;char temp[1000];int i = 0;int total_words, total_word;struct err{int line;int row;int mode;};typedef struct err err;vectorerr err_list;struct id_save{int times;char contain[1000];struct id_save* next;};typedef struct id_save* id_savePtr;id_savePtr id_list;void id_count(){int k;for(id_savePtr curr = id_list; curr-next != NULL; curr = curr-next){int flag = 1;for(k = 0; temp[k] != \0; k++){if(curr-contain[k] != temp[k]){flag = 0;break;}}if(flag == 1 curr-contain[k] == \0){curr-times++;return; }}id_savePtr curr2 = new(id_save);curr2-times = 1;for(k = 0; temp[k] != \0; k++){curr2-contain[k] = temp[k];}curr2-contain[k] = \0;curr2-next = id_list-next;id_list-next = curr2;}void output_id_list(){int j = 1;printf(id 统计\n);if(id_list-next != NULL)for(id_savePtr curr = id_list-next; curr-next != NULL; curr = curr-next){printf(NO.%d:%-30s%-30d \n, j, curr-contain, curr-times);j++;}}void bugreport(int reason){err temp;temp.line = line;t

您可能关注的文档

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档