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

📄 cframe.java

📁 编译原理的课程设计,词法分析器,基于java jdk1.4做的,有源码和bat文件可直接运行
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	        		     }
	        	    	else if(fh.get("|")==null)
	        		    fh.put("|","|");
	        	    }
	        		
	        		
	        	}
	        	if(temp.indexOf("!")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("!")+1)=='=')
	        		{
	        			if(fh.get("!=")==null)
	        			{
	        				fh.put("!=","!=");
	        			}
	        		}
	        		else if(fh.get("!")==null)
	        		fh.put("!","!");
	        		
	        	}
	        	if(temp.indexOf("~")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("~")+1)=='=')
	        		{
	        			if(fh.get("~=")==null)
	        			{
	        				fh.put("~=","~=");
	        			}
	        		}
	        		else if(fh.get("~")==null)
	        		fh.put("~","~");
	        		
	        	}
	        	
	        	StringTokenizer fenxi1=new StringTokenizer(temp,";");
	        	int i=0;
	        	while(fenxi1.hasMoreTokens())
	        	{  String ss=fenxi1.nextToken();
	        		this.fenxistr(ss);
	        	    i++;
	        	}
	        	if(i>1)
	        	{
	        		if(fh.get(";")==null)
	        		{
	        			fh.put(";",";");
	        		}
	        	}
	        }
	        this.getall();
	        String sss[]={ "关键字" , "符号" , "常量" , "变量" };
	        
	        table=new JTable(result,sss);
	        //table.setAutoCreateColumnsFromModel(true);
	        table.setEnabled(false);
	        table.setBounds(1,271,700,200);
	        JScrollPane js=new JScrollPane(table);
	        js.setBounds(1,271,700,200);
	        js.setVisible(true);
	        frame.add(js);
	        table.setVisible(true);
	        
	     }
	     if(e.getSource()==edit)
	     {
	     	say.setEditable(true);
	     	ed=true;
	     }
	}
	public void fenxistr(String s)
	{
		StringTokenizer fenxi=new StringTokenizer(s," ");
		String temp="";
		
		while(fenxi.hasMoreTokens())
		{
			temp=fenxi.nextToken();
			boolean bo=false;//判断该串是否已经被检查完
			//this.fenxifh(temp);
				if(hash.get(temp)!=null)//判断是否为关键字
				{
					if(hash1.get(temp)==null)
					{
						hash1.put(temp,temp);
					    System.out.println(temp);
					}
				    bo=true;
			     }
			     else if(fuhao.get(temp)!=null)//判断是否为符号
			     {
			     	if(fh.get(temp)==null)
			     	{
			     		fh.put(temp,temp);
			     	}
			     	bo=true;
			     }
			     else if(var.get(temp)!=null)
			     {
			     	bo=true;
			     }
			     else if(con.get(temp)!=null)
			     {
			     	bo=true;
			     }
			     if(!bo)
			     {  
			       
			     	
			        	StringTokenizer fenxi1=new StringTokenizer(temp,",");
		                String temp1="";
		                	
		                while(fenxi1.hasMoreTokens())
		                 {
			                temp1=fenxi1.nextToken();
			                 boolean bo1=false;
			                 if(hash.get(temp)!=null)
			                 {
			                 	if(hash1.get(temp)==null)
			                 	{
			                 		hash1.put(temp,temp);
			                 	}
			                 	bo1=true;
			                 }
			                 if(fuhao.get(temp1)!=null)
			                 {
			                 	if(fh.get(temp1)==null)
			                 	{
			                 		fh.put(temp1,temp1);
			                 	}
			                 	bo1=true;
			                 }
			                 if(var.get(temp1)!=null)
			                 {
			                 	bo1=true;
			                 }
			                 if(con.get(temp1)!=null)
			                 {
			                 	bo1=true;
			                 }
			                 if(!bo1)
			                 {   
			                    StringTokenizer fenxi2=new StringTokenizer(temp1,"{}[]()=-+* 	/%&|!~<>?:\n");
			                    String temp2="";
			                    while(fenxi2.hasMoreTokens())
			                    {
			                    	temp2=fenxi2.nextToken();
			                    	if(hash.get(temp2)!=null)
			                    	{
			                    		if(hash1.get(temp2)==null)
			                    		hash1.put(temp2,temp2);
			                    		continue;
			                    	}
			                    	if(fuhao.get(temp2)!=null)
			                    	{
			                    		if(fh.get(temp2)==null)
			                    		fh.put(temp2,temp2);
			                    		continue;
			                    	}
			                    	if((temp2.indexOf("\"")!=-1)||temp2.startsWith("0")||Character.isDigit(temp2.charAt(0)))
			                    	{
			                    		if(con.get(temp2)==null)
			                    		con.put(temp2,temp2);
			                    		
			                    	}
			                    	else
			                    	{
			                    		if(var.get(temp2)==null)
			                    		{   
			                    		    if(temp2.indexOf("java.")!=-1||temp2.indexOf("javax.")!=-1)
			                    		    continue;
			                    		
			                    			var.put(temp2,temp2);
			                    		
			                    		}
			                    	}
			                    	
			                    }
			                    
			                 }
			              }	
			     }
		}
	}
	public void getall()
	{
		Enumeration num=hash1.elements();
		int size=hash1.size();
		if(con.size()>size)
		size=con.size();
		if(var.size()>size)
		size=var.size();
		if(fh.size()>size)
		size=fh.size();
		System.out.println("关键字");
		result=new String[size][4];
		//result[][0]="关键字";
		                int i2=0;
		                String s1="";
						while(num.hasMoreElements())
						{
							 s1=(String)num.nextElement();
							s1=s1+"  ";
							result[i2][0]=s1;
							i2++;
						System.out.println(s1);
						}
					
						System.out.println("符号");
						num=fh.elements();
						i2=0;
						while(num.hasMoreElements())
						{
							 s1=(String)num.nextElement();
							s1=s1+"  ";
							
						result[i2][1]=s1;
							i2++;
						System.out.println(s1);
						}
						i2=0;
						System.out.println("常量");
						num=con.elements();
						while(num.hasMoreElements())
						{
							 s1=(String)num.nextElement();
							s1=s1+"  ";
							
							result[i2][2]=s1;
							i2++;
						System.out.println(s1);
						}
						System.out.println("变量");
						num=var.elements();
						i2=0;
						while(num.hasMoreElements())
						{
							 s1=(String)num.nextElement();
							s1=s1+"  ";
							
							result[i2][3]=s1;
							i2++;
						System.out.println(s1);
						}
	}
	/*public void fenxifh(String temp)
	{
			if(temp.indexOf("=")!=-1)
	        	{
	        		int i1=temp.indexOf("=");
	        		if(temp.charAt(i1+1)=='=')
	        		{
	        			if(fh.get("==")==null)
	        			fh.put("==","==");
	        		}
	        		else 
	        		{
	        			switch(temp.charAt(i1-1))
	        			{
	        				case '+':
	        				  if(fh.get("+=")==null)
	        				  {
	        				  	fh.put("+=","+=");
	        				  }
	        				  break;
	        				case '-':
	        				if(fh.get("-=")==null)
	        				fh.put("-=","-=");
	        				break;
	        				case '*':
	        				if(fh.get("*=")==null)
	        				{
	        					fh.put("-=","-=");
	        				}
	        				break;
	        				case '/':
	        				if(fh.get("/=")==null)
	        				fh.put("/=","/=");
	        				break;
	        				case '%':
	        				if(fh.get("%=")==null)
	        				fh.put("%=","%=");
	        				break;
	        				case '&':
	        				if(fh.get("&=")==null)
	        				fh.put("&=","&=");
	        				break;
	        				case '|':
	        				if(fh.get("|=")==null)
	        				fh.put("|=","|=");
	        				break;
	        				case '!':
	        				if(fh.get("!=")==null)
	        				fh.put("!=","!=");
	        				break;
	        				case '~':
	        				if(fh.get("~=")==null)
	        				fh.put("~=","~=");
	        				break;
	        				case '<':
	        				if(fh.get("<=")==null)
	        				fh.put("<=","<=");
	        				break;
	        				case '>':
	        				if(fh.get(">=")==null)
	        				fh.put(">=",">=");
	        				break;
	        				default :
	        				if(fh.get("=")==null)
	        				fh.put("=","=");
	        			}
	        		}
	        		}
	        		if(temp.indexOf(">")!=-1)
	        	{
	        			if(temp.charAt(temp.indexOf(">")+1)=='=')
	        		{
	        			if(fh.get(">=")==null)
	        			{
	        				fh.put(">=",">=");
	        			}
	        		}
	        		else if(fh.get(">")==null)
	        		fh.put(">",">");
	        		
	        	}
	        	if(temp.indexOf("+")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("+")+1)=='+')
	        		{
	        			if(fh.get("++")==null)
	        			{
	        				fh.put("++","++");
	        			}
	        		}
	        		else
	        		{
	        	    	if(temp.charAt(temp.indexOf("+")+1)=='=')
	        	     	{
	        		    	if(fh.get("+=")==null)
	        		    	{
	        			    	fh.put("+=","+=");
	        		    	}
	        	     	}
	        		else if(fh.get("+")==null)
	        			{
	        				fh.put("+","+");
	        			}
	        		}
	        		
	        	}
	        	if(temp.indexOf("-")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("-")+1)=='-')
	        		{
	        			if(fh.get("--")==null)
	        			{
	        				fh.put("--","--");
	        			}
	        		}
	        		else if(temp.charAt(temp.indexOf("-")+1)=='=')
	        		{
	        			if(fh.get("-=")==null)
	        			{
	        				fh.put("-=","-=");
	        			}
	        		}
	        		else
	        		{
	        			if(fh.get("-")==null)
	        			{
	        				fh.put("-","-");
	        			}
	        		}
	        		
	        	}
	        	if(temp.indexOf("*")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("*")+1)=='=')
	        		{
	        			if(fh.get("*=")==null)
	        			{
	        				fh.put("*=","*=");
	        			}
	        		}
	        		else if(fh.get("*")==null)
	        		fh.put("*","*");
	        		
	        	}
	        	if(temp.indexOf("/")!=-1)
	        	{
	        			if(temp.charAt(temp.indexOf("/")+1)=='=')
	        		{
	        			if(fh.get("/=")==null)
	        			{
	        				fh.put("/=","/=");
	        			}
	        		}
	        		else if(fh.get("/")==null)
	        		fh.put("/","/");
	        		
	        	}
	        	if(temp.indexOf("%")!=-1)
	        	{
	        			if(temp.charAt(temp.indexOf("%")+1)=='=')
	        		{
	        			if(fh.get("%=")==null)
	        			{
	        				fh.put("%=","%=");
	        			}
	        		}
	        		else if(fh.get("%")==null)
	        		fh.put("%","%");
	        		
	        	}
	        	if(temp.indexOf("(")!=-1)
	        	{
	        		if(fh.get("(")==null)
	        		fh.put("(","(");
	        		
	        	}
	        	if(temp.indexOf(")")!=-1)
	        	{
	        		if(fh.get(")")==null)
	        		fh.put(")",")");
	        		
	        	}
	        	if(temp.indexOf("{")!=-1)
	        	{
	        		if(fh.get("{")==null)
	        		fh.put("{","{");
	        		
	        	}
	        	if(temp.indexOf("}")!=-1)
	        	{
	        		if(fh.get("}")==null)
	        		fh.put("}","}");
	        		
	        	}
	        	if(temp.indexOf("&")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("&")+1)=='&')
	        		{
	        			if(fh.get("&&")==null)
	        			{
	        				fh.put("&&","&&");
	        			}
	        		}
	        		else
	        		{
	        			if(temp.charAt(temp.indexOf("&")+1)=='=')
	        		     {
	        		    	if(fh.get("&=")==null)
	        		     	{
	        			    	fh.put("&=","&=");
	        		    	}
	        	        }
	        		else
	        			if(fh.get("&")==null)
	        			{
	        				fh.put("&","&");
	        			}
	        		}
	        	}
	        	if(temp.indexOf("|")!=-1)
	        	{   
	        	    if(temp.charAt(temp.indexOf("|")+1)=='|')
	        	    {
	        	    	if(fh.get("||")==null)
	        	    	fh.put("||","||");
	        	    	
	        	    }
	        	    else{
	        	    	if(temp.charAt(temp.indexOf("|")+1)=='=')
	        		     {
	        			     if(fh.get("|=")==null)
	        			     {
	        			    	fh.put("|=","|=");
	        			       }
	        		     }
	        	    	else if(fh.get("|")==null)
	        		    fh.put("|","|");
	        	    }
	        		
	        		
	        	}
	        	if(temp.indexOf("!")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("!")+1)=='=')
	        		{
	        			if(fh.get("!=")==null)
	        			{
	        				fh.put("!=","!=");
	        			}
	        		}
	        		else if(fh.get("!")==null)
	        		fh.put("!","!");
	        		
	        	}
	        	if(temp.indexOf("~")!=-1)
	        	{
	        		if(temp.charAt(temp.indexOf("~")+1)=='=')
	        		{
	        			if(fh.get("~=")==null)
	        			{
	        				fh.put("~=","~=");
	        			}
	        		}
	        		else if(fh.get("~")==null)
	        		fh.put("~","~");
	        		
	        	}
	}*/
}

⌨️ 快捷键说明

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