ホームページ >Java >&#&チュートリアル >ANTLR を使用して単純な 4 演算式の計算機を作成するにはどうすればよいですか?

ANTLR を使用して単純な 4 演算式の計算機を作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 13:46:10760ブラウズ

How Can I Create a Simple Four-Operation Calculator Using ANTLR?

簡単な 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。