java编写的c语言词法分析器

java编写的c语言词法分析器

ID:13874900

大小:161.00 KB

页数:11页

时间:2018-07-24

java编写的c语言词法分析器_第1页
java编写的c语言词法分析器_第2页
java编写的c语言词法分析器_第3页
java编写的c语言词法分析器_第4页
java编写的c语言词法分析器_第5页
资源描述:

《java编写的c语言词法分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这是java编写的C语言词法分析器,我将核心代码整理起来,准备放在QQ空间和博客上,目的是互相学习借鉴,希望可以得到高手改进。这个词法分析器实现的功能有打开文件、保存文件、打开帮助文档、文本域内容的剪切和复制和黏贴、进行词法分析程序的项目结构如图,Word类和Unidentifiable类是两个JavaBean类,存放的参数有两个row(整型)、word(String),row用于获取行数,word用于获取标识符,LexerFrame是词法分析器的界面类,Analyze封装了进行词法分析的核心代码,doc文件夹放一个帮助文档,当用户点击帮助按钮时可以弹出来以帮助用户使用。//核心程序:pac

2、kagecom.lexer;importjava.util.ArrayList;/***1~20号为关键字,用下标表示,i+1就是其机器码;21~40号为操作符,用下标表示,i+21就是其机器码;41~60号为分界符,* 用下标表示,i+41就是其机器码;用户自定义的标识符,其机器码为51;常数的机器码为52;不可以识别的标识符,其机器码为0*/ publicclassAnalyze{ //关键字 privateStringkeyword[]={"int","long","char","if","else","for","while","return","break","continue",

3、   "switch","case","default","float","double","void","struct","static","do","short"};  //运算符 privateStringoperator[]={"+","-","*","/","%","=",">","<","!","==","!=",">=","<=","++","--","&","&&","

4、

5、","[","]"};  //分界符 privateStringdelimiter[]={",",";","(",")","{","}","'",""",":","#"};  publicAnalyze

6、(){   }  /** *判断是否是数字 */ publicbooleanisDigit(charch){  if(ch>='0'&&ch<='9'){   returntrue;  }else{   returnfalse;  } }  /** *判断是否是字母的函数 */ publicbooleanisLetter(charch){  if((ch>='a'&&ch<='z')

7、

8、(ch>='A'&&ch<='Z')){   returntrue;  }else{   returnfalse;  } }  /** *判断是否由两个运算符组成 */ publicbooleanisTwoO

9、perator(Stringstr,charch){  charlc;  intflag=0;  if(str.length()>1

10、

11、str.length()==0){//字符数大于2和无字符的情况   returnfalse;  }else{//字符数等于2的情况   lc=str.charAt(str.length()-1);   if(ch=='='&&(lc=='>'

12、

13、lc=='<'

14、

15、lc=='='

16、

17、lc=='!')){       }elseif(ch=='+'&&lc=='+'){       }elseif(ch=='-'&&lc=='-'){       }elsei

18、f(ch=='

19、'&&lc=='

20、'){       }elseif(ch=='&'&&lc=='&'){       }else{    returnfalse;//否就返回false   }   returntrue;//其它符号的情况都返回true  } }  /** *获取关键字的机器码 */ publicintgetKeywordOpcodes(Stringstr){    inti;   for(i=0;i

21、 returni+1;//返回关键字的机器码  }else{   return0;  } }  /** *获取操作符的机器码 */ publicintgetOperatorOpcodes(Stringstr){  inti;  for(i=0;i

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

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

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