编译原理实习一——词法分析

编译原理实习一——词法分析

ID:14503898

大小:94.00 KB

页数:7页

时间:2018-07-29

编译原理实习一——词法分析_第1页
编译原理实习一——词法分析_第2页
编译原理实习一——词法分析_第3页
编译原理实习一——词法分析_第4页
编译原理实习一——词法分析_第5页
资源描述:

《编译原理实习一——词法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实习一词法分析一、实验目的:   通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)。二、核心代码清单:1)定义类别编码publicstaticfinalintKEY_WORD=1;publicstaticfinalintIDENTIF

2、IER=2;publicstaticfinalintNUMBER=3;publicstaticfinalintOPERATOR=4;publicstaticfinalintDELIMITER=5;2)构造保留字,运算符,分隔符表//保留字、运算符、分隔符privateString[]keyword=newString[]{"if","int","for","while","do","return","break","continue"};//保留字privateString[]operator=newString[]{"+","-","*","=

3、",">",">=","=="};//运算符privateString[]delimiter=newString[]{",","{","}","(",")",";"};//分隔符3)判断是否为数字,字母函数①//判断是否是数字privatebooleanisNumber(charc){if(c>'9'

4、

5、c<'0')returnfalse;elsereturntrue;}②//判断是否是字母(包括下划线)//判断是否是字母privatebooleanisChar(charc){if((c<='z'&&c>='A')

6、

7、c=='_')returnt

8、rue;elsereturnfalse;}4)字母处理函数//处理第一个字符是字母的情况privatechardealWithChar(charc)throwsIOException{booleanflag=true;//是否出现重命名错误if(Character.isSpace(c)){c=(char)fis.read();returnc;}Stringstr=newString();while(isNumber(c)

9、

10、isChar(c))//是数字或字母,则加到str中;不是数字和字母,则str就是识别出的标识符(或保留字){str=str

11、+c;c=(char)fis.read();}if(compare(str,1))//判断是否是保留字tokens.add(newToken(KEY_WORD,str));else{//遍历单词表,查看是否有重命名错误for(inti=0;i

12、out.println(tmp+""+"变量重定义错误!");flag=false;break;}}if(flag){flag=true;tokens.add(newToken(IDENTIFIER,str));}}returnc;}2)数字处理函数//处理第一个字符是数字的情况.privatechardealWithNumber(charc)throwsIOException{if(Character.isSpace(c)){c=(char)fis.read();returnc;}Stringstr=newString();while(isNu

13、mber(c))//是数字,则加到str中;不是数字,则str就是识别出的数,将str加入到tokens中{str=str+c;c=(char)fis.read();}Tokentoken=newToken(NUMBER,str);tokens.add(token);returnc;}2)其他字符处理函数//其它字符的情况privatechardealWithOther(charc)throwsIOException{Stringstr=newString();if(Character.isSpace(c)){c=(char)fis.read()

14、;returnc;}if(compare(newString()+c,DELIMITER)){str=str+c;tokens.add(

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

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

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