package cifa;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Compiler {
private static String string;
private static String str;
private static char ch;
public static void getChar()throws Exception{
File f=new File("C:\xhp","xhp.txt");
if(!f.exists()){
System.out.println("文件不存在,请输入正确的文件路径");
}
FileReader fr=new FileReader(f);
int rs=0;
char[]data=new char[1000];
System.out.println(" ");
while((rs=fr.read(data))>0){
string=new String(data,0,rs).trim();
}
fr.close();
}
public static boolean isLetter(char c){
if((ch>='a'&&ch<='z')||(ch>+'A'&&ch<='Z')){
return true;
}
else
return false;
}
public static boolean isDigit(char c){
if(ch>='0'&&ch<='9'){
return true;
}
else
return false;
}
public static boolean isKey(String string){
if(string.equals("void")||string.equals("if")||string.equals("for")
||string.equals("while")||string.equals("do")||string.equals("return")
||string.equals("break")||string.equals("main"))
{
return true;
}
else
return false;
}
public static void judgement()throws Exception{
Compiler.getChar();
File f1=new File("C:\xhp","xhp1.txt");
FileWriter fw=new FileWriter(f1);
int m=0;
string+=" ";
for(int i=0;i<string.length();i++){
switch(m){
case 0:
ch=string.charAt(i);
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='='||ch=='>'||ch=='<'){
m=4;
}
else if(ch==','||ch==';'||ch=='{'||ch=='}'||ch=='('||ch==')'){
m=5;
}
else if(isDigit((ch=string.charAt(i)))){
str="";
str+=ch;
m=3;
}
else if(isLetter(ch=string.charAt(i))){
str="";
str+=ch;
m=2;
}
else{}
break;
case 4:
i--;
System.out.println(("(4"+" "+ch+" )"));
fw.write(("(4"+" "+ch+" )"+"
"+"
"));
m=0;
break;
case 5:
i--;
System.out.println(("(5"+" "+ch+" )"));
fw.write(("(5"+" "+ch+" )"+"
"+"
"));
m=0;
break;
case 2:
if(isLetter(ch=string.charAt(i))){
str+=ch;
}
else{
if(isKey(str)){
System.out.println(("(1"+" "+str+" )"));
fw.write(("(1"+" "+str+" )"+"
"+"
"));
}
else{
System.out.println(("(2"+" "+str+" )"));
fw.write(("(2"+" "+str+" )"+"
"+"
"));
}
i--;
m=0;
}
break;
case 3:
if(isDigit(ch=string.charAt(i))){
str+=ch;
}
else{
System.out.println(("(3"+" "+str+" )"));
fw.write(("(3"+" "+str+" )"+"
"+"
"));
i--;
m=0;
}
break;
}
}fw.flush();
fw.close();
}
public static void main(String[] args)throws Exception {
Compiler.judgement();
}
}