JAVA编写的 词法分析器.doc_第1页
JAVA编写的 词法分析器.doc_第2页
JAVA编写的 词法分析器.doc_第3页
JAVA编写的 词法分析器.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 实验源码import java.io.FileReader;import java.io.IOException;/* * 此程序0-50为关键字 * 51为标识符 * 52为数字 * 53-61为分隔符 * 62-75为运算符 * 76为字符常量 */public class wordAnalyse static char strbuf = new char500;/定义一个数组,用以存放从文件读取来的字符串 int keywordIndex; /取关键字的类号 /定义50个关键字 String keyWord = abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, void, volatile, while; public static void main(String args) throws IOException wordAnalyse wa = new wordAnalyse();wa.readFile(d:/a.txt);System.out.println(*用JAVA实现的java语言的词法分析器*);System.out.println(*The Result:*+n);wa.run();System.out.println(n+*Complete !*); /从文件中把字符串读取到一个字符数组中private void readFile(String url) throws IOExceptionint ch,i=0;FileReader fr = new FileReader(url);while( (ch=fr.read()!=-1)strbufi+=(char)ch;/判断是否为字母private boolean isLetter(char ch) if(a=ch&ch=z|A=ch&ch=Z)return true;else return false;/判断是否为数字private boolean isDigit(char ch) if(0= ch&ch=9)return true;else return false; /分析整个strbuf里的字符串private void run()StringBuffer buf = new StringBuffer(); /定义一个缓冲区for(int i=0; istrbuf.length;i+)/清除空格 制表符 换行符等字符if(strbufi= |strbufi=t|strbufi=n)i+;if(isLetter(strbufi) int k;buf.delete(0, buf.length();while(isLetter(strbufi)|isDigit(strbufi) buf.append(strbufi); i+;i-; /查找buf里面的字符串是否为关键字for(k =0; k=50)System.out.println(buf + tt +51); if(isDigit(strbufi) buf.delete(0, buf.length(); while(isDigit(strbufi) buf.append(strbufi); i+; i-; System.out.println(buf + tt +52); switch(char)strbufi)case,:System.out.println(strbufi + tt + 53);break;case;:System.out.println(strbufi + tt + 54);break;case(:System.out.println(strbufi + tt + 55);break;case):System.out.println(strbufi + tt + 56);break;case:System.out.println(strbufi + tt + 57);break;case:System.out.println(strbufi + tt + 58);break;case:System.out.println(strbufi + tt + 59);break;case:System.out.println(strbufi + tt + 60);break;case:System.out.println(strbufi + tt + 61);break;case.:System.out.println(strbufi + tt + 62);break;case+:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 63); elseSystem.out.println(buf + tt + 64); i+;break;case-:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 65); elseSystem.out.println(buf + tt + 66); i+;break;case*:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 67); elseSystem.out.println(buf + tt + 68); i+;break;case/:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 69); elseSystem.out.println(buf + tt + 70); i+;break;case:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 71); elseSystem.out.println(buf + tt + 72); i+;break;case:buf.delete(0, buf.length();buf.append(strbufi);i+;if(strbufi=)buf.append(strbufi);System.out.println(buf + tt + 73); elseSystem.out.println(buf + tt + 74); i+;break;case:System.out.println(strbufi + tt + 75);i+;if(isLetter(strbufi)|isDi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论