首页 资料Java编写的C语言词法分析器

资料Java编写的C语言词法分析器

举报
开通vip

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

资料Java编写的C语言词法分析器
资料Java编写的C语言词法分析器 这是java编写的C语言词法分析器,我将核心代码整理起来,准备放在QQ空间和博客上,目的是互相学习借鉴,希望可以得到高手改进。这个词法分析器实现的功能有打开文件、保存文件、打开帮助文档、文本域内容的剪切和复制和黏贴、进行词法分析 程序的项目结构如图,Word类和Unidentifiable类是两个JavaBean类,存放的参数有两个row(整型)、word(String),row用于获取行数,word用于获取标识符,LexerFrame是词法分析器的界面类,Analyze封装了进行词法分析的核心代码 ,doc文件夹放一个帮助文档,当用户点击帮助按钮时可以弹出来以帮助用户使用。 //核心程序: package com.lexer; import java.util.ArrayList; /** *1~20号为关键字,用下标 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示,i+1就是其机器码;21~40号为操作符,用下标表示,i+21就是其机器码;41~60号为分界符, * 用下标表示,i+41就是其机器码;用户自定义的标识符,其机器码为51;常数的机器码为52;不可以识别的标识符,其机器码为0 */ public class Analyze { //关键字 private String keyword[]={"int","long","char","if","else","for","while","return","break","cont inue", "switch","case","default","float","double","void","struct","static","do","sh ort"}; //运算符 private String operator[]={"+","-","*","/","%","=",">","<","!","==","!=",">=","<=","++","--"," &","&&","||","[","]"}; //分界符 private String delimiter[]={",",";","(",")","{","}","\'","\"",":","#"}; public Analyze() { } /** * 判断是否是数字 */ public boolean isDigit(char ch){ if(ch>='0'&&ch<='9'){ return true; }else{ return false; } } /** * 判断是否是字母的函数 */ public boolean isLetter(char ch){ if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){ return true; }else{ return false; } } /** * 判断是否由两个运算符组成 */ public boolean isTwoOperator(String str,char ch){ char lc; int flag=0; if(str.length()>1||str.length()==0){//字符数大于2和无字符的情况 return false; }else{//字符数等于2的情况 lc=str.charAt(str.length()-1); if(ch=='='&&(lc=='>'||lc=='<'||lc=='='||lc=='!')){ }else if(ch=='+'&&lc=='+'){ }else if(ch=='-'&&lc=='-'){ }else if(ch=='|'&&lc=='|'){ }else if(ch=='&'&&lc=='&'){ }else{ return false;//否就返回false } return true;//其它符号的情况都返回true } } /** * 获取关键字的机器码 */ public int getKeywordOpcodes(String str){ int i; for(i=0;i divide(String str){ ArrayList list=new ArrayList(); String s=""; char ch; int i; int row=1; for(i=0;i='0'&&ch<='9'){ return 1;//数字串 } if(str.length()==1) return 2;//单个字符 else return 3;//一个字符串 } /** * * 检查字符串是否为数字串,返回其机器码 */ public int checkDigit(String str){ int i; char ch; for(i=0;i'9'||ch<'0') break; } if(i 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 来调用方法 /** * 词法分析 */ public void doTokenizing(){ consoleTextArea.setText(null); ArrayList wlist=new ArrayList(); ArrayList ulist=new ArrayList(); String s,ts,str; Word word; int i; int opcodes=-1; int errorNum=0; int count=0; s=fileContentTextArea.getText(); if(s.length()>1){ ts=analyze.preFunction(s); wlist=analyze.divide(ts); values=new String[wlist.size()][3]; while(wlist.size()>0){ word=(Word)wlist.remove(0); str=word.getWord(); i=analyze.check(str); switch (i) { case 1: opcodes=analyze.checkDigit(str); break; case 2: opcodes=analyze.checkChar(str); break; case 3: opcodes=analyze.checkString(str); break; } if(opcodes==0){ Unidentifiable u=new Unidentifiable(word.getRow(), str); ulist.add(u); errorNum++; } values[count][0]=String.valueOf(word.getRow()); values[count][1]=str; values[count][2]=String.valueOf(opcodes); count++; } //更新表格内容 DefaultTableModel model=(DefaultTableModel)table.getModel(); while(model.getRowCount()>0){ model.removeRow(model.getRowCount()-1); } model.setDataVector(values,title); table=new JTable(model); consoleTextArea.append("共有"+errorNum+"处错误!"+"\n"); while (ulist.size()>0) { int r; String string; Unidentifiable uni=ulist.remove(0); r=uni.getRow(); string=uni.getWord(); consoleTextArea.append("第"+r+"行:"+"错误,"+string+"\n"); } }else{ int j; j=JOptionPane.showConfirmDialog(this, "请输入程序!"); if(j!=JOptionPane.YES_OPTION){ return; } } }
本文档为【资料Java编写的C语言词法分析器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:61KB
软件:Word
页数:16
分类:企业经营
上传时间:2017-09-30
浏览量:20