如何解析Java中的字符串?
我有一些理论上的想法,但我不太了解这门语言。如何解析Java中的字符串?
我需要从控制台线阅读,然后看看是否匹配的部件了一个符号表,其中包括关键字:"print [variable]"
,"load [variable]"
,"mem [variable]"
,"sqrt"
和"stop"
,以及数学符号。
它也需要认识到自己的变量(如"c = a + b"
为好。)
所以......它并不难,在理论上。您将检查与关键字或变量匹配的字符串的第一个字符。如果他们这样做,继续循环通过该关键字或变量来检查它是否是相同的字符串,直到你遇到一个空间。
但是,我不知道该怎么做。
编辑:为了使它不“太宽”,这里是一个问题的改写:如何检查字符串中的字符与Java中的字符进行比较?因为这个问题并不明显?我不知道。
你在说什么实际上是编译器的非常基本的部分和它的第一部分。你在理论上特别提到的基本上是一个词法分析器。可以在线获得大量代码,用于编译所有构建块。我建议你阅读编译器构建理论,特别是词法分析器部分。这里有一些链接。 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
我希望这有助于
我很感激。但是,问题是用Java实现的。 – SangoProductions
不知道我是否真正理解你的问题。 但是,如果要从控制台读取用户输入并将它们存储到变量中,则可以使用Scanner类,然后可以使用If语句检查输入是否包含所需的单词,然后按需要处理它们。
下面是一个例子:
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();
}
}
如果你已经说toCheck是“什么”,但我不认为这很有效,但行并不以“什么”结束,而是“什么+什么” – SangoProductions
确定。我特别询问如何检查字符串中的字符以便与东西进行比较。地狱是如何“太宽泛”?是否我有这个问题的背景? – SangoProductions