ホームページ >Java >&#&チュートリアル >ANTLR を使用して単純な 4 演算式の計算機を作成するにはどうすればよいですか?
簡単な ANTLR の例はありますか?
4 演算の計算機を含む簡単な ANTLR の例を作成するには、文法を次の形式に変換するプロセスを理解する必要があります。 Java ソース コード。
文法の作成ファイル
「Exp.g」のような文法ファイルから始めます:
grammar Exp; eval : additionExp EOF ; additionExp : multiplyExp(+ multiplyExp | - multiplyExp )* ; multiplyExp : atomExp(* atomExp | / atomExp )* ; atomExp : Number | '(' additionExp ')' ; Number : ('0'..'9')+ ('.' ('0'..'9')+)? ; WS : (' ' | '\t' | '\r'| '\n') {$channel=HIDDEN;} ;
レクサーとパーサーの生成
以下のコマンドを使用してレクサーを生成し、 parser:
java -cp antlr-3.2.jar org.antlr.Tool Exp.g
テスト クラスの作成
「ANTLRDemo.java」のようなテスト クラスを作成します:
import org.antlr.runtime.*; public class ANTLRDemo { public static void main(String[] args) throws Exception { ANTLRStringStream in = new ANTLRStringStream("12*(5-6)"); ExpLexer lexer = new ExpLexer(in); CommonTokenStream tokens = new CommonTokenStream(lexer); ExpParser parser = new ExpParser(tokens); parser.eval(); } }
Java コードを文法
パーサーがアクションを実行できるようにするには、{...} ブロック内に Java コードを追加します。
grammar Exp; eval returns [double value] : additionExp { System.out.println("value equals: "+$value); } ; // ...
例の実行
クラスをコンパイルし、レクサーとパーサーを生成し、ANTLRDemo を実行して式を評価します。 "12*(5-6)".
この例では、単純な 4 演算式電卓の基本的な文法を示し、文法の定義、必要なコンポーネントの生成、および関数を制御する Java コードの追加のプロセスを示しています。パーサーの動作。
以上がANTLR を使用して単純な 4 演算式の計算機を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。