⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 word.java

📁 编译原理的FOR循环语句的翻译
💻 JAVA
字号:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Vector;


public class Word {
	String s="";
	//char operator[]={'+','-','*','/','=','<','>','!'};
	//char separator[]={'(',')',';'};
	String keyword[]={"do","while","int","for","if","else"};
	Vector wordVector=null;
	private int line=1;
	
	Word(String  s,Vector vector){
		this.wordVector=vector;
		this.s=s;
		
	}
	
	//1表示标识符,2表示关键字,3表示常数,4表示算符,5表分界符
	
	public void analyze(){
		char temp[]=s.toCharArray();
		//System.out.println(temp.length);
		String s="";
		for(int i=0;i<temp.length;i++){
			if((temp[i]==' ')||(temp[i]=='\t')){//
				continue;
			}
			else if(temp[i]=='\n'){			
				line++;
				continue;
			}
			else if((65<=temp[i]&&temp[i]<=90)||(97<=temp[i]&&temp[i]<=122)){
				s=s+temp[i];
				i++;
				while(('A'<=temp[i]&&temp[i]<='Z')||('a'<=temp[i]&&temp[i]<='z')||('0'<=temp[i]&&temp[i]<='9')){
					s=s+temp[i];
					i++;
				}
				
				if(isKeyword(s)){
					wordVector.addElement(new Token(2,s,line));
				}
				else{
					wordVector.addElement(new Token(1,s,line));
				}
				i--;
				s="";
				continue;
				
			}
			else if('0'<=temp[i]&&temp[i]<='9'){
				s=s+temp[i];
				i++;
				while('0'<=temp[i]&&temp[i]<='9'){
					s=s+temp[i];
					i++;
				}
				
				wordVector.addElement(new Token(3,s,line));
				i--;
				s="";
			}
			else if(temp[i]=='!'){
				s=s+temp[i];
				i++;
				if(temp[i]=='='){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='>'){
				s=s+temp[i];
				i++;
				if(temp[i]=='='){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='<'){
				s=s+temp[i];
				i++;
				if(temp[i]=='='){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='='){
				s=s+temp[i];
				i++;
				if(temp[i]=='='){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='+'){
				s=s+temp[i];
				i++;
				if((temp[i]=='=')||(temp[i]=='+')){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='-'){
				s=s+temp[i];
				i++;
				if((temp[i]=='=')||(temp[i]=='-')){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='*'){
				s=s+temp[i];
				i++;
				if((temp[i]=='=')){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if((temp[i]=='/')&&(temp[i+1]=='/')){
				i=i+2;
				while(!(temp[i]=='/')&&(temp[i+1]=='/')){
					i++;
				}
				i++;
				
			}
			else if((temp[i]=='/')&&(temp[i+1]=='*')){
				i=i+2;
				while(!(temp[i]=='*')&&(temp[i+1]=='/')){
					i++;
				}
				i++;
				
			}
			else if((temp[i]=='/')&&(temp[i+1]!='/')){
				s=s+temp[i];
				i++;
				if(temp[i]=='='){
					s=s+temp[i];
					wordVector.addElement(new Token(4,s,line));
				}
				else{
					wordVector.addElement(new Token(4,s,line));
					i--;
				}
				
				s="";
			}
			else if(temp[i]=='('){
				s=s+temp[i];
				wordVector.addElement(new Token(5,s,line));
				s="";
			}
			else if(temp[i]==')'){
				s=s+temp[i];
				wordVector.addElement(new Token(5,s,line));
				s="";
			}
			else if(temp[i]==';'){
				s=s+temp[i];
				wordVector.addElement(new Token(5,s,line));
				s="";
			}
			else if(temp[i]=='"'){
				//s=s+temp[i];
				i++;
				while(temp[i]!='"'){
					s=s+temp[i];
					i++;
				}
				wordVector.addElement(new Token(3,s,line));
				s="";
			}
		}
		//display();
		writeToFile();
	}
	
	private boolean isKeyword(String s){
		for(int i=0;i<keyword.length;i++){
			if(s.equals(keyword[i])){
				return true;
			}
		}
		return false;
	}
	
	private void display(){
		for(int i=0;i<wordVector.size();i++){
			System.out.println(wordVector.elementAt(i));
		}
	}
	
	private void writeToFile(){
		File file=new File("word.txt");
		BufferedWriter bw=null;
		if(!file.exists()){
			try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else{
			file.delete();
			try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		try {
			bw=new BufferedWriter(new FileWriter(file));
			Iterator iterator=wordVector.iterator();
			
			while(iterator.hasNext()){
				bw.write(iterator.next().toString());
				bw.write(System.getProperty("line.separator"));
				
			}
			
			bw.close();
			
		} catch (IOException e) {
			if(bw!=null){
				try {
					bw.close();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
			e.printStackTrace();
		}
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -