编译原理

来源:互联网 发布:淘宝综合评分多少分 编辑:程序博客网 时间:2024/04/25 16:45
Code:
  1. import java.util.*;   
  2.  import java.io.*;   
  3.  import java.util.ArrayList;   
  4.     
  5. public class Mytest{   
  6.        
  7.        
  8.         public static void main(String args[])throws Exception{   
  9.         //定义三个数组来分别存放关键字字符串、变量的数值字符串、变量名字符串。       
  10.         ArrayList array1=new ArrayList();   
  11.         ArrayList array2=new ArrayList();   
  12.         ArrayList array3=new ArrayList();   
  13.         //输入字符串   
  14.         BufferedReader  buf=new BufferedReader(new InputStreamReader(System.in));   
  15.          System.out.println("本程序只限制对关键字if,int,else,for,float,long的识别,所以所输入的关键字不能超出这个范围!下面输入相关的语句内容:");   
  16.         String input=buf.readLine();   
  17.            
  18.         //使用分隔符将字符串分开;   
  19.         StringTokenizer token=new StringTokenizer(input,", ; ( ) * / + - = > < { }");   
  20.            
  21.            while(token.hasMoreTokens()){   
  22.             String str=token.nextToken();   
  23.             //如果是关键字的话,把它添加到数组1中   
  24.             if(isToken(str)){    
  25.             array1.add(str);   
  26.             }   
  27.             //如果是数字的话。把它添加到数组2中。   
  28.             if(isNumber(str)){      
  29.             array2.add(str);   
  30.                    
  31.             }   
  32.             //如果是变量的话,把它添加到数组3中。   
  33.                
  34.             if(!isToken(str)&&!isNumber(str)){     
  35.             array3.add(str);   
  36.             }   
  37.                
  38.         }   
  39.           //输出数组1   
  40.           Iterator list1=array1.iterator();   
  41.           System.out.print("输入的关键字:");   
  42.           while(list1.hasNext()){ System.out.print(list1.next()+" ");   
  43.              
  44.           }   
  45.           System.out.println(" ");   
  46.           //输出数组2。   
  47.           System.out.print("输入的数字有:");   
  48.           Iterator list2=array2.iterator();   
  49.           while(list2.hasNext()){   
  50.             System.out.print(list2.next()+" ");   
  51.           }   
  52.              
  53.           System.out.println(" ");   
  54.           System.out.print("输入的变量有:");   
  55.           //输出数组3   
  56.           Iterator list3=array3.iterator();   
  57.           while(list3.hasNext()){   
  58.             System.out.print(list3.next()+" ");   
  59.           }   
  60.        
  61.     }   
  62.        
  63.           //判断字符串是否是所定义的关键字   
  64.           public static boolean isToken(String a){   
  65.           String b[]={ "if","int","else","for","float","long"};//定义所有关键字的数组   
  66.           boolean  y=false;   
  67.           for(int i=0;i<b.length;i++)   
  68.           if(a.equals(b[i])){   
  69.             y=true;   
  70.           }   
  71.           return y;   
  72.     }   
  73.          
  74.         //判断字符串是否是数值;   
  75.        public static boolean isNumber(String a){   
  76.              
  77.           char ch[]=a.toCharArray();   
  78.           boolean y=false;   
  79.           for(int i=0;i<ch.length;i++){   
  80.             if(Character.isDigit(ch[i])){    
  81.                   y=true;   
  82.           }   
  83.          }   
  84.               return  y;   
  85.   
  86. }   
  87.   
  88. }   
  89.   
  90.   

 

原创粉丝点击