2016-09-19 91 views
-4

我有一些理论上的想法,但我不太了解这门语言。如何解析Java中的字符串?

我需要从控制台线阅读,然后看看是否匹配的部件了一个符号表,其中包括关键字:"print [variable]""load [variable]""mem [variable]""sqrt""stop",以及数学符号。

它也需要认识到自己的变量(如"c = a + b"为好。)

所以......它并不难,在理论上。您将检查与关键字或变量匹配的字符串的第一个字符。如果他们这样做,继续循环通过该关键字或变量来检查它是否是相同的字符串,直到你遇到一个空间。

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

编辑:为了使它不“太宽”,这里是一个问题的改写:如何检查字符串中的字符与Java中的字符进行比较?因为这个问题并不明显?我不知道。

+0

确定。我特别询问如何检查字符串中的字符以便与东西进行比较。地狱是如何“太宽泛”?是否我有这个问题的背景? – SangoProductions

回答

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

我希望这有助于

+0

我很感激。但是,问题是用Java实现的。 – SangoProductions

1

不知道我是否真正理解你的问题。 但是,如果要从控制台读取用户输入并将它们存储到变量中,则可以使用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(); 

    } 

} 
+0

如果你已经说toCheck是“什么”,但我不认为这很有效,但行并不以“什么”结束,而是“什么+什么” – SangoProductions