0

ユーザーが式を入力します。ユーザーが入力として次のように入力したとします。

new y java.util.ArrayList int:5

文字列のトークン化に成功し、文字列配列の別の場所に格納しました。次にやりたいことは、インデックスの内容を確認し、上記のリフレクションの入力に記載されているとおりに行うことです。やり方に困っています。ここに私のコードがあります

 public static void handling_input()
    {
         System.out.println("Welcome To Java Command Prompt: ");
         aLine = null;
         try
         {
            System.out.println("Enter The Command Line Expression: ") ;
            keyboard = new BufferedReader(new InputStreamReader(System.in));
            aLine = keyboard.readLine();
         st =  new StringTokenizer(aLine);
         dt = new StringTokenizer(aLine);
         }
         catch (IOException ex)
         {
             System.out.println("Error reading input!");
         }

    }
    public static void storing_tokens()
    {
        int counter =0;
        while(st.hasMoreTokens())
        {
            counter++;
            st.nextToken();
        }
        int i=0;
        expression_keeper= new String[counter];
        do
        {
            expression_keeper[i] = dt.nextToken().toString();
            i++;
        }while(dt.hasMoreTokens());
    }
    public static void token_classification()
    {
        for(int i=0; i<expression_keeper.length; i++)
        {
            if(expression_keeper[0].equalsIgnoreCase("new"))
            {

            }
            else
            if(expression_keeper[0].equalsIgnoreCase("call"))
            {

            }
            else
            if(expression_keeper[0].equalsIgnoreCase("print"))
            {

            }
            else
            {
                System.out.println("Invalid Script!");
            }
        }
    }
}

このif条件の中で:

if(expression_keeper[0].equalsIgnoreCase("new"))
        {

        }

指定されたクラス、そのオブジェクトを作成し、言及された修飾子に値を割り当てたい!

4

1 に答える 1

0

入力文字列トークンが実際に何を意味するのかは不明です。「java.util.ArrayList」は「y」のタイプで、初期サイズは 5 単位にする必要がありますか? または、最初の要素は 5 の整数にする必要がありますか?

過去に、独自の構文トークナイザーとパーサーを作成するのは複雑なことであることがわかりました。単純なケースでも、長期的にはJavaCCのようなものを使用する方が簡単であることがよくわかりました。

構文を正式に指定することで、コードに多くの構造が与えられ、デバッグ可能になります。そして、他の場所で述べたように、内省を使用して作成を行います。これを行うパッケージはjava.lang.reflect.

于 2013-03-04T17:53:52.210 に答える