2016-09-19 8 views
-4

私はいくつかの理論的なアイデアを持っていますが、その言語はよくわかりません。 "print [variable]""load [variable]""mem [variable]""sqrt""stop"だけでなく、数学記号を:パーツキーワードを含んでいるシンボルテーブル、と一致している場合Javaで文字列を解析するにはどうすればよいですか?

は、私はその後、コンソールから行を読み込むを参照する必要があります。

また、(なども"c = a + b"として。)自分で変数を認識する必要があり

そう...それは理論的には、そんなに難しいことではありません。文字列の最初の文字をキーワードまたは変数と照合して確認します。そうであれば、同じ文字列かどうかを確認するために、そのキーワードまたは変数をループして、スペースを叩くまで続けます。

しかし、私はそれを行う方法がわかりません。

EDIT:「あまりにも広すぎない」ようにするには、質問の文章を次のように書いてください。文字列の読み文字をJavaのものと比較するにはどうすればよいですか?質問が明白でなかったので?私は知らないよ。

+0

OK:ここ

は一例です。私は具体的に物語と比較するために文字列の読み文字をチェックする方法を尋ねました。どのように地獄は "広すぎる"?質問に文脈があったのでしょうか? – SangoProductions

答えて

1

あなたが言っているのは、実際にはコンパイラのビルディングブロックとその最初の部分です。あなたが理論的に特に言及しているのは、基本的に字句解析器です。多数のコードが、すべてのビルディングブロックでコンパイラを構築するためにオンラインで入手できます。私は、コンパイラ構築、特に語彙アナライザの部分についての理論を読むことをお勧めします。ここにいくつかのリンクがあります。 3. http://www.tutorialspoint.com/compiler_design/compiler_design_lexical_analysis.htm

1. https://en.wikipedia.org/wiki/Lexical_analysis 2. https://en.wikibooks.org/wiki/Compiler_Construction/Lexical_analysis は、私は、これは私は本当にあなたの質問を理解している場合

+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は「what」だが「what」ではなく「what + what」という行が終わっていないと言うと、 – SangoProductions

関連する問題