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

📄 fenxi.java

📁 初学java,最近帮同学作的一些实验
💻 JAVA
字号:
import java.io.*;
import java.util.*;
public class fenxi {
String keys[]={"byte","short","int","long","float","double","char","boolean",
		       "if","else","swich","case","default","do","while","for","break",
		       "continue","private","public","protected","final","static",
		       "abstract","synchronized","volatile","try","catch","finally",
		       "throw","throws","new","extends","implements","class","instanceof",
		       "this","super","false","true","null","return","void","package",
		       "import"};
String basetypes[]={"byte","short","int","long","float","double","char","boolean"};
String operators[]={"=","+=","*=","/=","%=","?","&","|","~","^","<<",">>",">>>",
		            "==","!=","<",">","<=",">=","&&","||","!","(",")","()",",",
		            ";","+","-","*","/","%","{","}","[","]","[]"};
String temporary;
int flag=0,fla=0;
String line;
private ArrayList<String> findedOperator=new ArrayList<String>();
private ArrayList<String> findedKey=new ArrayList<String>();
private ArrayList<String> findedVar=new ArrayList<String>();
private ArrayList<String> findedMethod=new ArrayList<String>();
private BufferedReader readline;
Reader f;
public fenxi(String s)throws IOException,FileNotFoundException
{
	 f=new FileReader(s);
}
public boolean search(String s[],String t)
{
     for(int i=0;i<s.length;i++)
    	 if(s[i].equals(t))
    		 return true;
     return false;
}
public boolean isOperator(String t)
{
    return search(operators,t);	
}
public boolean isKey(String t)
{
	return search(keys,t);
}
public boolean isVar(String t,String next)
{
	if(next.equals("="))//辨别已被初始化的变量
		return true;
	else if(flag==1&&fla==1&&!next.equals("("))
    	return true;
    else
        return false;	
}
public boolean isMethod(String t,String next)
{
	if(flag==1&&next.equals("("))
		return true;
	else
		return false;	
}
public void addOperator(String next)
{  if(next.equals("(")||next.equals(")"))
      next="()";
   if(next.equals("{")||next.equals("}"))
	  next="{}";
   if(next.equals("[")||next.equals("]"))
	  next="[]";
   if(findedOperator.indexOf(next)==-1)
		 findedOperator.add(next);
   flag=0;fla=0;
}
public void addMethod(String temporary)
{
	if(findedKey.indexOf( temporary)==-1)
	findedMethod.add( temporary);
    flag=0;fla=0;
}
public void addKey(String next)
{ 
 if(findedKey.indexOf( next)==-1)
	findedKey.add( next);
 flag=0;
 if(search(basetypes,next))//根据基本类型名辨别已被申明但并未初始化的变量,fla=1说明下个词可能是变量
      fla=1;
}
public void addVar(String temporary)
{
	if(findedVar.indexOf( temporary)==-1)
		findedVar.add(temporary);
	flag=0;fla=0;
}
public void run()throws IOException,FileNotFoundException
{
	readline=new BufferedReader(f);
	while((line=readline.readLine())!=null&&line.length()>0)
	{   
		if(line.startsWith("/*"))   //测试注释,注释部分不给予分析
		{  do
			{
			  line=readline.readLine();
			 }while(!line.endsWith( "*/"));
		}
		StringTokenizer st=new StringTokenizer(line," ,;.");
		while(st.hasMoreTokens())
			{ String next=st.nextToken();
			  if(flag==1)   // flag==1表明temporary中的内容可能是变量也可能是方法.
			  {
				if(isMethod(temporary,next)) 
					addMethod(temporary);
				else if(isVar(temporary,next))
				    addVar(temporary);
			  }
			 if(isOperator(next))
				  addOperator(next);
			 else if(isKey(next))
			      addKey(next);
		     else if(next.equals("//"))
				  break;
			 else
			     {flag=1;temporary=new String(next);}
		  }
   }
}
public void print(ArrayList<String> s)
{
	Iterator itr=s.iterator();
    while(itr.hasNext())
    {
    	String t=(String)itr.next();
    	System.out.print(t+" ");
    }
    System.out.println(" ");
}
public void show()
{
	System.out.println(" 关键字:");
	print(findedKey);
	System.out.println(" 操作符:");
	print(findedOperator);
	System.out.println(" 变量:");
	print(findedVar);
	System.out.println(" 方法:");
	print(findedMethod);
}
}

⌨️ 快捷键说明

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