- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验目的
二、实验内容根据编译中的原理编写一个词法分析程序输入一个C语言程序的源代码。
处理对输入进行分析,分离出、标识符、、符和界符。
输出编码,一种类型对应一编码三、实验Auto 1 Do 9 goto 17 sizeof 25 Break 2 Double 10 if 18 static 26 Case 3 Else 11 int 19 switch 27 Char 4 Struct 12 long 20 typedef 28 Const 5 Enum 13 register 21 union 29 Return 6 Extern 14 void 22 unsigned 30 Continue 7 Float 15 short 23 volatile 31 Default 8 For 16 signed 24 while 32
4.2标识符统一编码 100
4.3数值统一编码 200
4.4界符编码
界符 , ; { } ( ) [ ] “ 编码 501 502 503 504 505 506 507 508 509
4.5运算符编码
运算符 编码 运算符 编码 运算符 编码 运算符 编码 + 401 /= 409 = = 417 %= 425 = 402 / 410 = 418 426 ++ 403 != 411 419 427 -- 404 ! 412 420 | 428 -= 405 = 413 || 421 ^ 429 - 406 414 . 422 % 430 *= 407 = 415 423 * 408 416 ~ 424
4.6全局变量含义
int row:语法错误出现的所在列数
int line:语法错误出现的所在行数
int err:语法错误的个数
int begin:当前程序扫描在字符串中的开始位置
int end:当前程序扫描在字符串中的结束位置
4.7局部变量定义
int i:选择第i个字符进行检测
int state:单词类型判断标志
int N:文件长度
char c:当前遍历的字符
string str:输入字符串
int flag:退出标志
五、
5.1总体流程介绍
说明:state为输入字符状态标志,根据输入字符不同类型选择不同处理。
5.2主要分支选择算法介绍
5.2.1 case0情况算法
5.2.2 case 1情况算法
if(c == +){state = 0;error_text.append(\t运算符\t\t401 +\t+++\n);
} else if(c == =)
{state = 0;error_text.append(\t运算符\t\t402 +\t+=+\n);
}else
{state = 0;
if(isDigit(content.charAt(i - 2)))//isDigit函数判断是否为数值
error_text.append(\t数 值\t +\t200 +content.substring(begin, i-1) + \n);
error_text.append(\t运算符\t\t403 +\t++\n);//输出结果
i--;row--;
}
说明:对运算符++、+=、+以及数值进行判断结果输出。
5.2.3 case 2情况算法
if(c == -) error_text.append(\t运算符\t\t404 +\t--+\n);
else if(c == =) error_text.append(\t运算符\t\t405 +\t-=+\n);
else if(c==) error_text.append(\t运算符\t\t423 +\t-+\n);
else{ error_text.append(\t运算符\t\t406 +\t-+\n);i--;row--;}
state = 0;
说明:对运算符--、-= 、-、-,进行判断结果输出。
5.2.4 case 3情况算法
if(c == =)error_text.append(\t运算符\t\t407 +\t*=+\n);
else{error_text.append(\t运算符\t\t408 +\t*+\n);i--;row--;}
state = 0;
说明:对运算符*=,*,进行判断结果输出。
5.2.5 case 4情况算法
if(c == /){while((c) != \n){c = content.charAt(i);i++;}
state =
您可能关注的文档
- (精品)毕业论文 毕业设计 信息管理与信息系统 我国.doc
- (论文)从春节和圣诞节看中西文化差异与交融.doc
- [工学]日处理190吨硫化物含金石英矿选矿厂设计.doc
- [其它考试]2011执法证考试题库及参考答案.doc
- 4英文翻译李凯.doc
- 2008—2012年中国羽毛球拍研究报告 用于合并.doc
- 2013中央电大《商法》网考单项选择题题库(114刚刚考过).doc
- EDA交通灯课程设计.docx
- 八下第四章相似图形(二).doc
- 不同浓度CO2对南果梨常温货架生理品质的影响张佰清.doc
- 2010-2023历年河南省郑州市盛同学校高二下学期期中考试物理试卷(带解析).docx
- 2024年中国三脚凳凳包市场调查研究报告.docx
- 2024年中国全消光尼丝纺市场调查研究报告.docx
- 2010-2023历年河南省洛阳市高三下学期统考文综历史试卷(带解析).docx
- 2010-2023历年河南省洛阳市高一上学期期中考试化学试卷(A卷)(带解析).docx
- 2024年中国医用气垫(圆)市场调查研究报告.docx
- 2024年中国女式珊瑚绒睡衣市场调查研究报告.docx
- 2024年中国干燥室市场调查研究报告.docx
- 2024年中国金针机市场调查研究报告.docx
- 2010-2023历年黑龙江省哈师大附中高一下学期期中考试语文试卷(带解析).docx
文档评论(0)