Gibt es ein einfaches ANTLR-Beispiel?
Um ein einfaches ANTLR-Beispiel mit einem Rechner mit vier Operationen zu erstellen, müssen Sie den Prozess der Konvertierung von Grammatik verstehen Java-Quellcode.
Erstellen der Grammatik Datei
Beginnen Sie mit einer Grammatikdatei wie „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;} ;
Generieren des Lexers und Parsers
Verwenden Sie die Befehl unten, um den Lexer zu generieren und Parser:
java -cp antlr-3.2.jar org.antlr.Tool Exp.g
Erstellen der Testklasse
Erstellen Sie eine Testklasse wie „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(); } }
Hinzufügen von Java-Code zur Grammatik
Um die Leistung des Parsers zu ermöglichen Aktionen, fügen Sie Java-Code innerhalb von {...} Blöcken hinzu:
grammar Exp; eval returns [double value] : additionExp { System.out.println("value equals: "+$value); } ; // ...
Ausführen des Beispiels
Kompilieren Sie die Klassen, generieren Sie den Lexer und Parser und führen Sie ANTLRDemo aus um den Ausdruck „12*(5-6)“ auszuwerten.
Dieses Beispiel zeigt eine grundlegende Grammatik für einen einfachen Rechner mit vier Operationen, Veranschaulichung des Prozesses der Definition einer Grammatik, der Generierung der erforderlichen Komponenten und des Hinzufügens von Java-Code zur Steuerung des Parserverhaltens.
Das obige ist der detaillierte Inhalt vonWie kann ich mit ANTLR einen einfachen Rechner mit vier Operationen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!