import java.util.*;public class Test { static String[] word = {"int","if","then","while","else","do"}; static String[] tag = {"+","-","*","/","=","==","<",">","!="}; static String[] split = {"(","{","}",",",";",")"}; //char[] num = {'0','1','2','3','4','5','6','7','8','9'}; static HashMap<String,String> map ; public static void analyze(String str){ int i = 0; if(str.charAt(i)=='0'||str.charAt(i)=='1'||str.charAt(i)=='2'||str.charAt(i)=='3'||str.charAt(i)=='4'|| str.charAt(i)=='5'||str.charAt(i)=='6'||str.charAt(i)=='7'||str.charAt(i)=='8'|| str.charAt(i)=='9'){ while(i<str.length()){ if(str.charAt(i)=='0'||str.charAt(i)=='1'||str.charAt(i)=='2'||str.charAt(i)=='3'||str.charAt(i)=='4'|| str.charAt(i)=='5'||str.charAt(i)=='6'||str.charAt(i)=='7'||str.charAt(i)=='8'|| str.charAt(i)=='9'){ i++; }else{ map.put("不合法", map.get("不合法")+" "+str); return; } map.put("NUM",str); } }else if(str.charAt(i)=='a'||str.charAt(i)=='b'||str.charAt(i)=='c' ||str.charAt(i)=='d'||str.charAt(i)=='e'||str.charAt(i)=='f'||str.charAt(i)=='g'|| str.charAt(i)=='h'||str.charAt(i)=='i'||str.charAt(i)=='j'||str.charAt(i)=='k'|| str.charAt(i)=='l'||str.charAt(i)=='m'||str.charAt(i)=='n'||str.charAt(i)=='o'|| str.charAt(i)=='p'||str.charAt(i)=='q'||str.charAt(i)=='r'||str.charAt(i)=='s'|| str.charAt(i)=='t'||str.charAt(i)=='w'||str.charAt(i)=='v'||str.charAt(i)=='w'|| str.charAt(i)=='x'||str.charAt(i)=='y'||str.charAt(i)=='z'){ for(int j=0;j<word.length;j++){ if(word[j].equals(str)){ map.put("保留字", str); return; } } map.put("标识符", str); }else if(str.charAt(i)=='+'||str.charAt(i)=='-'||str.charAt(i)=='*'|| str.charAt(i)=='/'||str.charAt(i)=='='||str.charAt(i)=='>'||str.charAt(i)=='<'||str.charAt(i)=='!'){ for(int j=0;j<tag.length;j++){ if(tag[j].equals(str)){ map.put("tag", str); return; } } map.put("不合法", str); return; }else{ for(int j=0;j<split.length;j++){ if(split[j].equals(str)){ map.put("分隔符", str); return; } } map.put("不合法", str); return; } } public static void main(String[] args) { map = new HashMap(); Scanner in = new Scanner(System.in); System.out.println("请输入您的程序,以\"#\"结尾"); String str; while(!(str=in.next()).equals("#")){ analyze(str); } Iterator iter = map.entrySet().iterator(); while(iter.hasNext()){ Map.Entry entry = (Map.Entry) iter.next(); String key = (String)entry.getKey(); String value = (String)entry.getValue(); System.out.println(key+": "+value); } }}