„JavaCC“ – Versionsunterschied
Erscheinungsbild
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
Aktuelle Version eingetragen; Homepage aktualisiert |
K Kapitelreihenfolge |
||
Zeile 6: | Zeile 6: | ||
| AktuelleVersionFreigabeDatum = 7. Februar 2017<ref>https://github.com/javacc/javacc/releases/tag/release_7_0_2</ref> |
| AktuelleVersionFreigabeDatum = 7. Februar 2017<ref>https://github.com/javacc/javacc/releases/tag/release_7_0_2</ref> |
||
| Betriebssystem = Betriebssysteme mit [[Java-Laufzeitumgebung]] |
| Betriebssystem = Betriebssysteme mit [[Java-Laufzeitumgebung]] |
||
| Kategorie = [[ |
| Kategorie = [[Parsergenerator]] |
||
| Lizenz = [[BSD-Lizenz]] |
| Lizenz = [[BSD-Lizenz]] |
||
| Programmiersprache = [[Java (Programmiersprache)|Java]] |
| Programmiersprache = [[Java (Programmiersprache)|Java]] |
||
Zeile 12: | Zeile 12: | ||
}} |
}} |
||
'''JavaCC''' ('''''Java''' '''C'''ompiler '''C'''ompiler'') ist ein [[Lexikalischer Scanner|Lexer-]] und [[ |
'''JavaCC''' ('''''Java''' '''C'''ompiler '''C'''ompiler'') ist ein [[Lexikalischer Scanner|Lexer-]] und [[Parsergenerator]], der in [[Java (Programmiersprache)|Java]] implementiert ist und als Ausgabe Java- und [[C++]]-Quellcode erzeugt.<ref>{{Internetquelle|titel=JavaCC Announce Mailinglist on Java.net|url=https://java.net/projects/javacc/lists/announce/archive/2013-07/message/0|zugriff=2013-09-09|sprache=en}}</ref> JavaCC ist [[Open Source]] und unter den Bedingungen der [[BSD-Lizenz]] herausgegeben. |
||
JavaCC funktioniert ähnlich wie das bekannte Programm [[Yacc]], benutzt aber ein anderes Verfahren zum Parsen der Daten: JavaCC erzeugt einen [[LL-Parser|LL(k)-Parser]], während Yacc einen [[LALR-Parser|LALR(1)-Parser]] erzeugt. Die [[Formale Grammatik|Grammatik]] muss also etwas anders strukturiert sein, als dies bei Yacc der Fall wäre. |
JavaCC funktioniert ähnlich wie das bekannte Programm [[Yacc]], benutzt aber ein anderes Verfahren zum Parsen der Daten: JavaCC erzeugt einen [[LL-Parser|LL(k)-Parser]], während Yacc einen [[LALR-Parser|LALR(1)-Parser]] erzeugt. Die [[Formale Grammatik|Grammatik]] muss also etwas anders strukturiert sein, als dies bei Yacc der Fall wäre. |
||
Zeile 21: | Zeile 21: | ||
* Das zur statischen Codeanalyse von Quelltexten genutzte Werkzeug [[PMD (Software)|PMD]] verwendet zur Verarbeitung der benutzerdefinierten Regeln intern JavaCC.<ref>{{Internetquelle|titel=Customizing PMD – How to write a PMD rule|url=http://pmd.sourceforge.net/pmd-5.0.5/howtowritearule.html|zugriff=2013-09-09|sprache=en}}</ref> |
* Das zur statischen Codeanalyse von Quelltexten genutzte Werkzeug [[PMD (Software)|PMD]] verwendet zur Verarbeitung der benutzerdefinierten Regeln intern JavaCC.<ref>{{Internetquelle|titel=Customizing PMD – How to write a PMD rule|url=http://pmd.sourceforge.net/pmd-5.0.5/howtowritearule.html|zugriff=2013-09-09|sprache=en}}</ref> |
||
* Das Java-API des Ontologie-Projekts [[Cyc]] greift für seine Parserfunktionen auf JavaCC zurück. |
* Das Java-API des Ontologie-Projekts [[Cyc]] greift für seine Parserfunktionen auf JavaCC zurück. |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
== Siehe auch == |
== Siehe auch == |
||
Zeile 33: | Zeile 27: | ||
* [[ANTLR]] (Compiler-Compiler für LL(*)-Parser in verschiedenen Zielsprachen) |
* [[ANTLR]] (Compiler-Compiler für LL(*)-Parser in verschiedenen Zielsprachen) |
||
* [[Coco/R]] (Compiler-Compiler für LL(k)-Parser in verschiedenen Zielsprachen) |
* [[Coco/R]] (Compiler-Compiler für LL(k)-Parser in verschiedenen Zielsprachen) |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
== Einzelnachweise == |
== Einzelnachweise == |
||
<references /> |
<references /> |
||
__NOTOC__ |
__NOTOC__ |
||
[[Kategorie:Compilerbau]] |
[[Kategorie:Compilerbau]] |
||
[[Kategorie:Java (Programmiersprache)]] |
[[Kategorie:Java (Programmiersprache)]] |
Version vom 19. August 2017, 23:59 Uhr
JavaCC | |
---|---|
Basisdaten
| |
Aktuelle Version | 7.0.2 (Format invalid) |
Betriebssystem | Betriebssysteme mit Java-Laufzeitumgebung |
Programmiersprache | Java |
Kategorie | Parsergenerator |
Lizenz | BSD-Lizenz |
github.com/javacc/javacc |
JavaCC (Java Compiler Compiler) ist ein Lexer- und Parsergenerator, der in Java implementiert ist und als Ausgabe Java- und C++-Quellcode erzeugt.[2] JavaCC ist Open Source und unter den Bedingungen der BSD-Lizenz herausgegeben.
JavaCC funktioniert ähnlich wie das bekannte Programm Yacc, benutzt aber ein anderes Verfahren zum Parsen der Daten: JavaCC erzeugt einen LL(k)-Parser, während Yacc einen LALR(1)-Parser erzeugt. Die Grammatik muss also etwas anders strukturiert sein, als dies bei Yacc der Fall wäre.
Programme und Bibliotheken, die intern JavaCC verwenden
- Das Open-Source Suchmaschinen-Framework Lucene nutzt JavaCC zur Generierung des Lexers und des Query-Parsers.[3]
- Die Open-Source Template-Engine Velocity greift für seine Parserfunktionen auf JavaCC zurück.[4]
- Das zur statischen Codeanalyse von Quelltexten genutzte Werkzeug PMD verwendet zur Verarbeitung der benutzerdefinierten Regeln intern JavaCC.[5]
- Das Java-API des Ontologie-Projekts Cyc greift für seine Parserfunktionen auf JavaCC zurück.
Siehe auch
- JFlex (in Java geschriebener Scanner-Generator für Java)
- SableCC (Compiler-Compiler für LALR(1)-Parser in Java)
- ANTLR (Compiler-Compiler für LL(*)-Parser in verschiedenen Zielsprachen)
- Coco/R (Compiler-Compiler für LL(k)-Parser in verschiedenen Zielsprachen)
Literatur
- Tom Copeland: Generating Parsers with JavaCC. 2. Auflage. Centennial Books, Alexandria, 2009, ISBN 0-9762214-3-8.
- Anthony J. Dos Reis, Laura L. Dos Reis: Compiler Construction Using Java, JavaCC, and Yacc. 1. Auflage. John Wiley & Sons, 2012, ISBN 0-470-94959-7.
Einzelnachweise
- ↑ https://github.com/javacc/javacc/releases/tag/release_7_0_2
- ↑ JavaCC Announce Mailinglist on Java.net. Abgerufen am 9. September 2013 (englisch).
- ↑ Apache Lucene package documentation. Abgerufen am 9. September 2013 (englisch).
- ↑ The Apache Velocity project – Required Tools. Abgerufen am 9. September 2013 (englisch).
- ↑ Customizing PMD – How to write a PMD rule. Abgerufen am 9. September 2013 (englisch).