词法分析器实验报告.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 =

文档评论(0)

大吧书屋 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档