编译原理词法分析.doc

编译原理词法分析.doc

ID:51388108

大小:121.00 KB

页数:7页

时间:2020-03-23

编译原理词法分析.doc_第1页
编译原理词法分析.doc_第2页
编译原理词法分析.doc_第3页
编译原理词法分析.doc_第4页
编译原理词法分析.doc_第5页
资源描述:

《编译原理词法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告1课程编译原理实验名称词法分析专业—计算机科学与技术—班级一11计七——_学号姓名实验日期:20113年4月9日一、实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程屮将其分解为各类单词的词法分析方法。编制一个读单词过程,从输入的源程序屮,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号IH身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)二、实验内容程序输入/输出示例:如源程序为C语言。输入如下一段:main(){inta,b;a

2、二10;b二a+20;}要求输出如下:•Z51/

3、/

4、•Z•Za52zlZZIK--52z(/(X--•Z2055/

5、/

6、要求:识别保留字:if、int、for、while、do、return>breakscontinue;单词种别码为lo其他的都识别为标识符;单词利I别码为2。常数为尢符号整形数;单词种别码为3。运算符包括:+、-、*、/、二、>、<、>二、〈二、!二;单词种别码为4。分隔符包括:,、;、{、}、(、);单词种别码为5。三、实验环境1、微型计算机一台2、WINDOWS操作系统,vs2012开发坏境11!实验步骤(描述实验步骤及屮间的结果或现象。在实验屮做了什

7、么事情,怎么做的,发生的现象和屮间结果)代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceanalasypublicclassemCode{privatestringcode;publicanCode(stringcode){this.code二RemoveNewLine(code);}publicvoidany(string[]str,int[]result){inti二0;boolisNum二true;boolisjuged=false;boolisRec

8、ognize=true;foreach(stringtempinstr)switch(temp){case〃if〃:case〃・,〃mt:case〃q〃for:case"while":case〃1〃do:case/zret.urnz,:case"break":case〃亠・〃continue:result[i]二1;isjuged=true;break;小〃丄〃•case十:〃〃case一:〃〃case*:case/:〃〃case=:〃、〃case/:case〃/〃<:case>=case〃/〃<=case〃丨二〃•result[i]二4;isJuged二true;break;casec

9、ase〃〃•case〃{〃case〃]〃case〃(〃case〃)〃isjuged二true;result[i]二5;break;}if(!isjuged)foreach(charcintemp)if(c<,0,

10、

11、c>'9'){isNum二false;isRecognize=true;break;}}if(isNum){result[i]=3;}if(isRecognize){result[i]=2;}ji++;isjuged=false;isNum二true;isRecognize=false;publicstring[]split()stringwaitForSplit=code;

12、Listsplited=newl>ist();//string[]〃,y〃*〃,T、〃〉〃,”J〃>二〃,〃<二〃,”{”,〃}”、”J〃)”、”;”、…};foreach(charcinwaitForSplit)switch(c)casecase+case*'case/case•casecase('case)'case{'case}'case>'case<'case二intindex=waitForSplit.IndexOf(c);if(index==0)if(c!八)spllted.Add(c.ToStringO);waitForSplit=waitF

13、orSplit.Substring(1);}else{stringtmp二waitForSplit.Substring(0,index);splited.Add(tmp);if(c!二’’)splited.Add(c.ToStringO);waitForSplit=waitForSplit.Substring(index+1);}break;returnsplited.ToArray();}publicstringjoin(stri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。