... | ... | @@ -5,11 +5,22 @@ Für die Erstellung eines neuen Sprachlevels sind, neben den auszuführenden Tes |
|
|
|
|
|
1) Neue Funktion mit Typ LevelT erstellen
|
|
|
2) Das bestehende LevelMapping anpassen
|
|
|
3) Die Levelerkennung der REPL anpassen
|
|
|
4) Die Levelerkennung des Linters anpassen
|
|
|
3) Die Levelerkennung der REPL/Linters anpassen
|
|
|
|
|
|
## 1) Neue Funktion mit Typ LevelT erstellen
|
|
|
Das Modul 'StaticAnalysis.CheckState' hält sämtliche Informationen zu einem Level.
|
|
|
## 1) Neue LevelT-Funktion erstellen
|
|
|
Das Modul `StaticAnalysis.CheckState` hält sämtliche Informationen zu einem Level.
|
|
|
Vordefiniert sind aktuell die Level eins bis drei.
|
|
|
|
|
|
Um nun ein neues Level zu definieren reicht es das Level als Funktion vom Typ 'LevelT' zu definieren und mittels do-Notation die entsprechenden Checks nacheinander aufzuführen. |
|
|
\ No newline at end of file |
|
|
Um nun ein neues Level zu definieren reicht es das Level als Funktion vom Typ `LevelT` zu definieren und mittels do-Notation die entsprechenden Checks nacheinander aufzuführen.
|
|
|
|
|
|
## 2) LevelMapping anpassen
|
|
|
Zunächst muss im Modul `StaticAnalysis.Messages.Prettify` der Datentyp `Level` um eine Option für das neue Level erweitert werden. Ebenfalls anzupassen ist die Funktion `levelString`.
|
|
|
Danach benötigt die Funktion `levelMapping` im Modul `StaticAnalysis.CheckState` eine neue Fallunterscheidung innerhalb des case-Konstrukts um das neue Level auf die dazugehörige Level-Funktion abzubilden.
|
|
|
|
|
|
## 3) Levelerkennung REPL anpassen
|
|
|
Das neu definierte Level muss sowohl in der REPL als auch im Linter in die Levelerkennung aufgenommen werden.
|
|
|
|
|
|
Für die Erkennung innerhalb der REPL muss im Modul `Repl.Loader` die Funktion `determineLevel` bzw. die Unterfunktion `extractLevel` um den Kommentarblock für das neue Level erweitert werden.
|
|
|
Danach muss im Modul `Real.CmdOptions` die Funktion 'readLevel` um einen Fall erweitert werden.
|
|
|
|
|
|
Die Levelerkennung des Linters erfordert im Modul `DrHaskellLint` lediglich die Anpassung der Zuordnung der Level-Id innerhalb des case-Ausdrucks der Funktion `run`. |
|
|
\ No newline at end of file |