编译原理
来源:互联网 发布:淘宝综合评分多少分 编辑:程序博客网 时间:2024/04/25 16:45
- import java.util.*;
- import java.io.*;
- import java.util.ArrayList;
- public class Mytest{
- public static void main(String args[])throws Exception{
- //定义三个数组来分别存放关键字字符串、变量的数值字符串、变量名字符串。
- ArrayList array1=new ArrayList();
- ArrayList array2=new ArrayList();
- ArrayList array3=new ArrayList();
- //输入字符串
- BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
- System.out.println("本程序只限制对关键字if,int,else,for,float,long的识别,所以所输入的关键字不能超出这个范围!下面输入相关的语句内容:");
- String input=buf.readLine();
- //使用分隔符将字符串分开;
- StringTokenizer token=new StringTokenizer(input,", ; ( ) * / + - = > < { }");
- while(token.hasMoreTokens()){
- String str=token.nextToken();
- //如果是关键字的话,把它添加到数组1中
- if(isToken(str)){
- array1.add(str);
- }
- //如果是数字的话。把它添加到数组2中。
- if(isNumber(str)){
- array2.add(str);
- }
- //如果是变量的话,把它添加到数组3中。
- if(!isToken(str)&&!isNumber(str)){
- array3.add(str);
- }
- }
- //输出数组1
- Iterator list1=array1.iterator();
- System.out.print("输入的关键字:");
- while(list1.hasNext()){ System.out.print(list1.next()+" ");
- }
- System.out.println(" ");
- //输出数组2。
- System.out.print("输入的数字有:");
- Iterator list2=array2.iterator();
- while(list2.hasNext()){
- System.out.print(list2.next()+" ");
- }
- System.out.println(" ");
- System.out.print("输入的变量有:");
- //输出数组3
- Iterator list3=array3.iterator();
- while(list3.hasNext()){
- System.out.print(list3.next()+" ");
- }
- }
- //判断字符串是否是所定义的关键字
- public static boolean isToken(String a){
- String b[]={ "if","int","else","for","float","long"};//定义所有关键字的数组
- boolean y=false;
- for(int i=0;i<b.length;i++)
- if(a.equals(b[i])){
- y=true;
- }
- return y;
- }
- //判断字符串是否是数值;
- public static boolean isNumber(String a){
- char ch[]=a.toCharArray();
- boolean y=false;
- for(int i=0;i<ch.length;i++){
- if(Character.isDigit(ch[i])){
- y=true;
- }
- }
- return y;
- }
- }