Closed jan-christiansen closed 2 years ago
Branch bnfctest ist erstellt, darin ein Haskell Projekt für den Test erstellt. Das Tool hab ich soweit installiert.
Beim ersten Test des BNFConverters hab ich festgestellt, das ALEX und HAPPY fehlt. Dies kann über stack install --resolver nightly alex und cabal install happy installiert werden
Java 1.1 bnf als java.cf Datei im Ordner bnfc hinzugefügt. Mittels bnfc -m --haskell java.cf make wurde der Parser durch den bnfconverter erzeugt. Alle Dateien wurden im Branch bnfctest hochgeladen
Erste Konsolen Tests des Parsers ergeben, das in der BNF zu Java 1.1 definitiv Generics fehlen
Parsing Ergebnis in PDF Datei hochgeladen
Unnötige Dateien aus dem BNFConverter sind gelöscht. Main modul wurde angepasst. Dazu wurde eine Java.txt Datei erstellt, in der Java-Code angepasst aus einer Algorithmen Abgabe eingefügt wurde. In der Main Funktion wird einmal diese Datei eingelesen und auf der Konsole ausgegeben. Dann wird diese Datei ebenfalls in weitere Funktionen gegeben. Dieser Schritt und die zugehörigen Funktionen wurden aus der TestJava.hs kopiert. Die dient in dem Boilerplate Code als Main Modul. In ghci wurde nun Testweise die Main.main ausgeführt und es kam zu dem Ergebnis, wie zuvor mit den Konsolen Tests
Zur Erweiterung der LBNF, nach genauem durchschauen der LBNF sind die Labels sowie Terminal und Non-Terminale recht einfach verständlich. Es lässt sich meiner Meinung nach sehr gut ergänzen. Da die Labels prinzipiell selbst gewählt sind von der Bezeichnung her, die in dieser LBNF sich aus dem Bezeichner und dem Keyword zusammensetzen, kann man das so gut erweitern. Zu prüfen wäre nun welche weiteren Spezifikationen von Java sinnvoll sind dort hinzuzufügen und den daraus resultierenden Aufwand, auch im Vergleich zu anderen Möglichkeiten wie die von Lukas getestete Bibliothek.
Ich habe im Main modul die main funktion noch soweit angepasst, das zuerst der FilePath zur Java-Code Datei, die geparst werden soll, als String eingelesen wird über den stdin und dann die Datei eingelesen und in den Parser gegeben wird
Ich habe das ganze nun nochmal mit einem Pfad auf meiner Festplatte zu einer .Java Datei in meinem eclipse-workspace getestet und der konnte den Code erfolgreich parsen
Wir werden erst mal die Bibliothek language-java
verwenden. Für den Fall, dass wir noch wechseln müssen, bleibt der branch erst mal erhalten.
Hier soll das Tool BNF Converter einmal ausprobiert werden. Bei diesem Tool kann man eine Grammatik für eine Sprache in Form einer BNF angeben. Das Tool erzeugt aus der Grammatik dann einen Parser und einen AST für die Sprache. Das Tool kann Code in verschiedenen Sprachen erzeugen, unter anderem in Haskell.
Main
-Modul anlegen, in dem eine Beispiel-Java-Datei geparset wird. Bitte einfach eine einfache Abgabe aus Algorithmen nutzen.