我有一些理论上的想法,但我不太了解这种语言。
我需要从控制台读取一行,然后查看部分是否与符号表匹配,符号表包含关键字:"print [variable]"
,"load [variable]"
,"mem [variable]"
,{{ 1}}和"sqrt"
,以及数学符号。
它还需要自己识别变量(例如"stop"
。)
所以......从理论上讲,这并不难。您将检查与关键字或变量匹配的字符串的第一个字符。如果他们这样做,请继续循环遍历该关键字或变量,以检查它是否是相同的字符串,直到你达到一个空格。
但是,我不知道该怎么做。
编辑:为了使它不“太宽泛”,这里是问题的重写:如何检查读取字符串中的字符以与Java中的内容进行比较?因为问题不明显?我不知道。
答案 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();
}
}