编译原理词法分析(Compiler theory, lexical analysis).doc

编译原理词法分析(Compiler theory, lexical analysis).doc

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

编译原理词法分析(Compiler theory, lexical analysis) #包含iostream > < #包括<字符串> 使用名称空间; #定义马克斯32 字符“=”; int行= 1,行= 0; / /关键字表单词种别码1 字符串键“32”=“自动”、“中断”、“捕获”、“捕获”、“char”、“类”、“常量”、“继续”、“默认”、“删除”、“做”、“双”, “其他”、“枚举”、“浮”、“对”、“如果”、“国际”、“长”、“新”、“私人”、“保护”、“公共”、“登记”、“回归”、“短”、“静”, “结构”、“开关”、“这个”、“空”、“同时”}; / /标示符表单词种别码2 字符串标识符[ 200 ]; / /常数表单词种别码3 字符串常量[ 50 ]; / /算术运算符表单词种别码4 字符串操作符[ 4 ] =“+”,“-”,“*”,“/”}; / /界符表单词种别码5 字符串分隔符11“{”,“(”,“”),“[”,“”“,”“,”“,”“,”“{”,“}”,“!”“\”“}; / /关系运算符表单词种别码6 字符串r_operators [ ] = {“<”、“> =”,“= =”、“>”、“< =“}; / /关键字判断 int Iskey(字符串C){ int i; 对于(i = 0;i < max;i + +){ 如果(键i)比较(c)= 0)返回1; } 返回0; } / /判断是否为字母 int IsLetter(char c){ 如果(((C≤Z)和(C>=a))| |((C≤Z)和(C > =“”)))返回1; 否则返回0; } int IsDigit(char c){ //判断是否为数字 如果(C > = '0'和C < = 9)返回1; 否则返回0; } / /将ARR中的标示符插入符号表并且返回符号表的指针 int InsertId(String s){ 对于(int = i 0;i < 200;i + +) { 如果(标识符i =“=”) { 标识符[ i ]; 还我; } } 返回0; } / /将ARR中的常实数插入常数表并且返回常数表的指针 int InsertConst(String s){ 对于(int = i 0;i < 50;i + +) { 如果(常数i =“=”) { 常数[ i ]; 还我; } } 返回0; } 无效的分析(文件*外地个人识别号){ / / ARR相当于课本中的strtoken 字符串arr =“”; 而((CH =指针(外地个人识别号))!= EOF) { ARR =“”; 如果(CH = =”| | CH = = '\t' | | CH = = '\n') { 如果(= =“n”) 行+; 行=0; } 如果(IsLetter(CH)) { 而(IsLetter(CH)| | IsDigit(CH)) { ARR = ARR CH; CH =指针(外地个人识别号); } / /文件指针回移一个位置 fseek(外地个人识别号,1l,seek_cur); / /列增加一 行+; 如果(Iskey(ARR)) { cout << ARR <<“T T(1,”<< ARR <<“)” <<“T T关键字“<<”T T(“<<线<<”,“<<排<<“)” << endl; } 其他的 { 对于(int = i 0;i < 200;i + +){ 如果(标识符[我]。比较(ARR)= = 0) { cout << ARR <<“T T(2,”<< ARR <<”)“<<”T T标示符“<<”T T(“<<线<<”,“<<排<<”)“<< endl;断裂;} 别的{ 插(ARR); cout << ARR <<“T T(2,”<< ARR <<”)“<<”T T标示符“<<”T T(“<<线<<”,“<<排<<”)“<< endl;break;} } } } / /处理常数 如果(IsDigit(CH)) { 而(IsDigit(CH)| | CH = =“”& IsDigit(指针(外地个人识别号))) { ARR = ARR CH; CH =指针(外地个人识别号); } fseek(外地个人识别号,1l,seek_cur); 如果(IsLetter(CH =指针(外地个人识别号))) { 而(IsLetter(CH)| | IsDigit(CH)) { ARR = ARR CH; CH =指针(外地个人识别号); } fseek(外地个人识别号,1l,seek_cur); 行+; cout << ARR <<“T“恐怖”<<“T teroor“<<”T T(“<<线<<”,“<<排<<”)“<< endl; } 别的{ 行+; 对于(int = i

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档