Sto lavorando a un progetto di progettazione del compilatore in Java. L'analisi lessicale è fatta (usando jflex) e mi chiedo quale strumento simile a yacc sarebbe il migliore (più efficiente, più facile da usare, ecc.) Per fare analisi sintattica e perché.equivalente Yacc per Java
risposta
In passato, ho usato ANLTR sia per lesser che per parser e la homepage di JFlex dice che può interagire con ANTLR. Non direi che la documentazione online di ANTLR è eccezionale. Ho finito con l'investire in 'The Definitive ANTLR reference', che mi ha aiutato notevolmente.
Nella mia esperienza, ANTLR è di gran lunga lo strumento più importante per Java lexing/analisi. –
GNU Bison ha un'interfaccia Java,
http://www.gnu.org/software/bison/manual/html_node/Java-Bison-Interface.html
Si può usare andare generare il codice Java.
Quali sono le tue esperienze con questo? Funziona bene? –
Un'altra opzione potrebbe essere GOLD Parser.
A differenza di molte delle alternative, il parser GOLD genera le tabelle di analisi dalla grammatica e le inserisce in un file binario non eseguibile. Ogni lingua supportata dispone quindi di un motore che legge le tabelle binarie e analizza il file sorgente.
Non ho usato l'implementazione Java in modo specifico, ma ho usato il motore Delphi con risultati abbastanza buoni.
C'è anche jacc.
Jacc è il più vicino possibile a yacc, ma è implementato in puro java e genera un parser java.
si interfaccia bene con JFLEX
- 1. Lex/Yacc per C#?
- 2. Equivalente Java per .charCodeAt()
- 3. Motivi per usare le alternative lex/yacc?
- 4. C# Uri.EscapeDatastring() equivalente per Java
- 5. equivalente a callgrind per java?
- 6. File grammaticale Yacc/Jay per JavaScript?
- 7. Cerchi una grammatica Java in formato lex/yacc
- 8. . Equivalente a Java AssertionError Java
- 9. Equivalente Java per MEF in .NET
- 10. Equivalente dell'effettiva Java di Bloch per C#
- 11. Equivalente di dump del core per Java
- 12. Equivalente di Dart per Java StringBuilder
- 13. C++ equivalente per dati membro java final
- 14. Equivalente di NCrunch per Java in Eclipse
- 15. Equivalente Java per l'oggetto multidimensionale Numpy
- 16. Equivalente Java di Reflection.Emit
- 17. Java equivalente di OpenLayers
- 18. Compositore equivalente in JAVA?
- 19. Java equivalente a WPF
- 20. java equivalente di swfobject
- 21. __LINE__ equivalente in Java?
- 22. "Curl -F" Java equivalente
- 23. Lex e Yacc in PHP
- 24. Equivalente TreeSet Java in Python?
- 25. Equivalente finale statico C++ Java
- 26. Equivalente Java di C# 'Enumerable.Any'
- 27. C# Equivalente di Java IdentityHashMap
- 28. Java equivalente a PHP morire
- 29. equivalente Swift di Java .toString()
- 30. equivalente Java del registro int?
Difficoltà: la CUP non viene più mantenuta e [CUP 2] (http://www2.in.tum.de/cup2) è beta. Va ancora bene? – minopret
@minopret - Non ho usato CUP in più di una dozzina di anni, ma a meno che non ci fosse un grosso bug non risolto, allora dovrebbe essere OK anche se non mantenuto attivamente. Tuttavia, a meno che tu non abbia bisogno di un comportamento simile a YACC, guarderei ANTLR. – kdgregory
Sto lavorando a un creatore di file markdown GitHub (.md) che prende un file di codice, scritto in qualsiasi lingua, e genera un file .md per esso. Lo sto facendo in Java. Questi software possono gestire * qualsiasi * lingua o solo Java? –