package java_project;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class MyMain{
Set<String> keyWordsSet = new HashSet<String>();
Set<String> operatorSet = new HashSet<String>();
Set<String> separatorSet= new HashSet<String>();
String fileStr = "",currentStr="";
int index = -1;
public static void main(String[] args){
MyMain my = new MyMain();
MyUtil.readProgram();
my.initSets();
my.readFile();
my.start();
}
private void start(){
for(int i=0;i<fileStr.length();i++){
currentStr = "";
String s = fileStr.charAt(i)+"";
index = i;
if(Character.isLetter(fileStr.charAt(i))||s.equals("_")){
dealLetter();
}else if(Character.isDigit(fileStr.charAt(i))){
dealDigit();
}else if(separatorSet.contains(s)){
dealSeparator();
}else if(operatorSet.contains(s)||s.equals("!")){
dealOperator();
}
i = index;
}
}
/**
* 初始化集合
*/
private void initSets(){
String keyWords[] = {"if","int","for","while","do","return","break","continue"};
keyWordsSet.addAll(Arrays.asList(keyWords));
String operators[] = {"+","-","*","/","=",">","<",">=","<=","!="};
operatorSet.addAll(Arrays.asList(operators));
String separators[] = {",",";","{","}",")","("};
separatorSet.addAll(Arrays.asList(separators));
}
/**
* 初始化需要读取的程序文件
*/
private void readFile(){
try {
InputStreamReader reader = new InputStreamReader(new FileInputStream("jc.c"));
int temp;
while((temp=reader.read())!=-1)
fileStr+=((char)temp);
} catch (Exception e){}
}
private void dealLetter(){
currentStr+=fileStr.charAt(index);
for(int i=index+1;i<fileStr.length();i++){
String s = fileStr.charAt(i)+"";
index = i;
if(s.equals("_")||Character.isLetterOrDigit(fileStr.charAt(i))){
currentStr+=fileStr.charAt(i);
}else{
break;
}
}
index--;
if(keyWordsSet.contains(currentStr)){
System.out.println("(1,"+"\""+currentStr+"\")");
}else{
System.out.println("(2,"+"\""+currentStr+"\")");
}
}
private void dealDigit(){
currentStr+=fileStr.charAt(index);
for(int i=index+1;i<fileStr.length();i++){
index = i;
if(Character.isDigit(fileStr.charAt(i))){
currentStr+=fileStr.charAt(i);
}else{
break;
}
}
index--;
System.out.println("(3,"+"\""+currentStr+"\")");
}
private void dealSeparator() {
currentStr+=fileStr.charAt(index);
System.out.println("(5,"+"\""+currentStr+"\")");
}
private void dealOperator(){
currentStr = fileStr.charAt(index)+"";
if(index+1<fileStr.length()){
String s1 = fileStr.charAt(index)+"";
s1 += fileStr.charAt(index+1)+"";
if(operatorSet.contains(s1)){
System.out.println("(4,"+"\""+s1+"\")");
index++;
}else{
System.out.println("(4,"+"\""+currentStr+"\")");
}
}else{
System.out.println("(4,"+"\""+currentStr+"\")");
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
java_project.7z (8个子文件)
java_project
.project 388B
src
java_project
MyMain.java 3KB
MyUtil.java 1KB
jc.c 35B
.settings
org.eclipse.jdt.core.prefs 598B
.classpath 301B
bin
java_project
MyUtil.class 2KB
MyMain.class 4KB
共 8 条
- 1
资源评论
- Poisonkk2018-11-21代码写的很好,值得学习!
潘建成
- 粉丝: 136
- 资源: 82
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功