如何解析Java中的字符串?

时间:2016-09-19 22:57:11

标签: java

我有一些理论上的想法,但我不太了解这种语言。

我需要从控制台读取一行,然后查看部分是否与符号表匹配,符号表包含关键字:"print [variable]""load [variable]""mem [variable]",{{ 1}}和"sqrt",以及数学符号。

它还需要自己识别变量(例如"stop"。)

所以......从理论上讲,这并不难。您将检查与关键字或变量匹配的字符串的第一个字符。如果他们这样做,请继续循环遍历该关键字或变量,以检查它是否是相同的字符串,直到你达到一个空格。

但是,我不知道该怎么做。

编辑:为了使它不“太宽泛”,这里是问题的重写:如何检查读取字符串中的字符以与Java中的内容进行比较?因为问题不明显?我不知道。

2 个答案:

答案 0 :(得分:1)

你所说的实际上是编译器的构建块及其第一部分。你在理论上特别提到的是一个词法分析器。可以在线获得大量代码,用于构建具有所有构建块的编译器。我建议你阅读编译器构造理论,特别是词法分析器部分。这里有一些链接。 1。https://en.wikipedia.org/wiki/Lexical_analysis 2。https://en.wikibooks.org/wiki/Compiler_Construction/Lexical_analysis 3。http://www.tutorialspoint.com/compiler_design/compiler_design_lexical_analysis.htm

我希望这会有所帮助

答案 1 :(得分:1)

不确定我是否真的理解你的问题。 但是,如果要从控制台读取用户输入并将其存储到变量中,可以使用Scanner类,则可以使用If语句检查输入是否包含所需的单词,然后根据需要处理它们。 / p>

以下是一个例子:

public class ReadConsole2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String toCheck = "what";

        while (true) {

            System.out.print("Enter something : ");
            String input = scanner.nextLine();

            if (toCheck.equals(input)) {
                // do something
               break;
            }

            System.out.println("input : " + input);
            System.out.println("-----------\n");
        }

        scanner.close();

    }

}