Ich möchte ein Lexer für Java in Python laufen mit AntlrPython Ziel für Java-Grammatik in antlr
Für Antlr4, ich bin die Java8 Grammatik von https://github.com/antlr/grammars-v4/tree/master/java8 verwenden.
Ich erzeuge den Parser
java -jar antlr-4.5.2-complete.jar -Dlanguage=Python2 ./Java8.g4
Jetzt verwenden, wenn ich an der erzeugten Java8Lexer.py aussehen, es enthält
return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))
Ich glaube nicht, dass die Art Guss ist gültig Python und es wirft einen Syntaxfehler dort, wenn ich es benutze.
Ich hatte ein ähnliches Problem mit antlr3 mit einer Antlr3 Java 1.6 Grammatik. Es erzeugt
boolean isSomething = something
die auch nicht gültig Python ist.
Fehle ich etwas? Gibt es eine Möglichkeit, einen Java-Lexer in Python mit Hilfe von antilr zu verwenden?
Entfernen Sie * und * ersetzen Sie sie durch ihre Python-Entsprechungen, da die Prädikate für den ordnungsgemäßen Betrieb dieser Lexer-Regeln von Bedeutung sind. – GRosenberg
Ich verließ den ersten Teil der Regel, d. H. Zeichenklassen [a-z] etc .. aber entfernt die Character. * Sachen und es funktioniert jetzt. Vielen Dank! – greenberet123