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;} ;
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
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(); } }
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); } ; // ...
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!