Maison > Java > javaDidacticiel > Comment puis-je créer une calculatrice simple à quatre opérations à l'aide d'ANTLR ?

Comment puis-je créer une calculatrice simple à quatre opérations à l'aide d'ANTLR ?

Mary-Kate Olsen
Libérer: 2024-12-02 13:46:10
original
722 Les gens l'ont consulté

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

Existe-t-il un exemple ANTLR simple ?

Créer un exemple ANTLR simple impliquant une calculatrice à quatre opérations nécessite de comprendre le processus de conversion de la grammaire en Code source Java.

Création de la grammaire Fichier

Commencez par un fichier de grammaire tel que "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;}
    ;
Copier après la connexion

Génération du Lexer et de l'analyseur

Utilisez le commande ci-dessous pour générer le lexer et l'analyseur :

java -cp antlr-3.2.jar org.antlr.Tool Exp.g
Copier après la connexion

Création la classe de test

Créer une classe de test comme "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();
    }
}
Copier après la connexion

Ajout de code Java à la grammaire

Pour permettre à l'analyseur d'effectuer des actions, ajoutez du code Java dans {...} blocs :

grammar Exp;

eval returns [double value]
    : additionExp { System.out.println("value equals: "+$value); }
    ;
    
// ...
Copier après la connexion

Exécuter l'exemple

Compilez les classes, générez le lexer et l'analyseur, et exécutez ANTLRDemo pour évaluer l'expression "12*(5-6 )".

Cet exemple montre une grammaire de base pour une simple calculatrice à quatre opérations, illustrant le processus de définition d'un grammaire, générant les composants nécessaires et ajoutant du code Java pour contrôler le comportement de l'analyseur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal