79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
* Parser um Packages erweitern
|
|
* Schätzung: 0 h
|
|
* Parser kann Java 8 und daher auch packages
|
|
* Convertierung zu AST
|
|
* AST kann schon Packages im Namen
|
|
* Es muss geprüft werden, ob geparste Datei im richtigen Ordner ist
|
|
*
|
|
* Constraints erstellen
|
|
* macht es hier einen Unterschied?
|
|
* es ändert sich nur der Namen der Typen
|
|
* das ist schon in JavaClassName enthalten
|
|
|
|
## Java verhalten
|
|
* das verhalten von Java soll kopiert werden
|
|
* Java kompiliert in den gleichen Ordner wie die source file
|
|
* Java erhält eine liste von Source Files, die es kompilieren soll
|
|
* anhand von deren Standort lassen sich relativ die Position von kompilierten Class-files bestimmen
|
|
* macht der javac Compiler allerdings nicht
|
|
* er nimmt sein Running Directory als classPath standardmäßig, falls keiner angegeben
|
|
* javac geht davon aus, dass CP richtig gesetzt wird, oder javac im Source-Root ausgeführt wird
|
|
|
|
* -cp path or -classpath path
|
|
Specifies where to find user class files, and (optionally) annotation processors and source files. This class path overrides the user class path in the CLASSPATH environment variable. If neither CLASSPATH, -cp nor -classpath is specified, then the
|
|
user class path is the current directory. See Setting the Class Path.
|
|
|
|
* Compiler kontrolliert nicht, ob package im korrekten Ordner ist
|
|
* auch keine Warnung
|
|
* unser kompiler könnte aber trotzdem zumindes eine Warnung ausgeben
|
|
|
|
### -d Parameter
|
|
* Optional
|
|
* damit lässt sich ein andere ort zur Ausgabe der Class-files bestimmen
|
|
|
|
# Tasks
|
|
* Es steht nur noch ein Task aus:
|
|
## Klassen aus Default Package laden
|
|
* Das kann für jede SourceFile anders sein
|
|
* Momentan funktioniert der Compiler sowieso nur mit einer SourceFile!
|
|
* an allen Stellen, an denen die Imports der SourceFile beachtet werden, müssen jetzt auch alle Klassen aus dem gleichen Ordner beachtet werden
|
|
|
|
### Stand
|
|
* CompilationEnvironment wurde erweitert und kann alle Klassen aus einem Ordner laden
|
|
* Allerdings funktionieren manche Tests noch nicht
|
|
* Die Bytecode-Tests funktionieren nicht, da sich kaputte Klassen im Bytecode-Jav-Ordner befinden
|
|
|
|
## Class files in richtigen Ordner legen ##
|
|
* Wenn Pfad übergeben, dann in Pfad + packageName
|
|
* Ohne Pfad, direkt neben die Source File legen
|
|
* wenn Source File nicht in richtigem Ordner -> Warnung ausgeben
|
|
|
|
### Stand ###
|
|
* Beinahe abgeschlossen
|
|
* TODO: Tests schreiben
|
|
|
|
## Class files einlesen
|
|
* Wenn Classpath übergeben
|
|
* Suchen in Classpath + packageName
|
|
* Müsste eigentlich UTLClassLoader automatisch machen (also packageNamen anfügen)
|
|
* Wenn nichts übergeben
|
|
* dann currentDirectory + packageName
|
|
* Für die Tests muss korrekter Classpath gesetzt werden
|
|
|
|
### Stand ###
|
|
TODO:
|
|
* es muss überall wo im Quellcode ClassLoader.getSystemClassLoader() oder ein andere Classloader verwendet wird,
|
|
* dieser ausgetauscht werden mit dem classLaoder, welcher bei der Instanzierung von JavaTXCompiler erstellt wird
|
|
|
|
## Class files mit packageNamen versehen
|
|
* In die Class file muss noch der korrekte name geschrieben werden
|
|
* kann möglicherweise ASM
|
|
* Kann ASM mittesl `cw.visit("name/mit/slashe/Getrennt"..`
|
|
* wurde bereits erledigt -> TODO: Testen
|
|
|
|
## Console Interface um Parameter -classpath und -output directory erweitern
|
|
|
|
# TODO 11.1.20 :
|
|
* Es muss überall, wo der URLClassloader mit einem Pfad instantiert wird, gecheckt werden, ob der Pfad mit "/" aufhört.
|
|
* Am besten eine Hilfsmethode schreiben
|