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 回答