Kompilatorprojektet
Projektet går ut på att konstruera en kompilator för det lilla språket
Javalette.
Viktiga datum
- Fredag 16/2: sista inlämningsdag för "etapp 1".
Inlämning görs med kommandot
rapportera 1 .
- Fredag 2/3: sista inlämningsdag för hela labben.
Inlämning görs med kommandot
rapportera 2 .
- Månddag 19/3: sista godkännandedag för hela labben.
Labschema
Följande labtider är bokade i labsal K i
läsvecka 2-7.
Bokningsschema finns på en anslagstavla i närheten av labsalen.
Måndagar | Tisdagar | Onsdagar | Torsdagar | Fredagar |
---|
- |
- |
15-17 |
15-17 |
13-15 |
Handledning
Handledarna är tillgängliga för att svara på frågor under de
schemalagda labbtiderna, men vi är kanske inte i labbsalen hela
tiden. Skicka mail till Josef eller Thomas, så kommer vi ner!
Bra-att-ha-filer
I ~komp/files
Alex.hs (för Haskell 1.4) eller Alex98.hs
(för Haskell 98).
- Fil som man skall ha med i program som använder alex.
MachineS.hs
- Datatyp för stackinstruktioner.
Innehåller funktionen showStackIns :: [InsS] -> String
Machine3.hs
- Datatyp för treoperandinstruktioner
Innehåller funktionen show3opIns :: [InsS] -> String
stackmachine.tar.gz och 3op2sparc.tar.gz
- Källkod (i Haskell 98) till programmen
stackmachine och
3op2sparc för dig som vill
provköra hemma. (Den senare kräver förstås att man har en SPARC.)
example.sm och example.3m
- Exempel på hur stackmaskinkoden respektive 3-operandskoden ska se
ut. Använder man de ovan nämnda funktionerna
showStackIns och
show3opIns får koden automatiskt rätt utseende.
(Lab-PM:et är lite bristfälligt i vissa detaljer om man
vill göra sina egna show-funktioner.)
I ~komp/bin
stackmachine
- Virtuell maskin för att köra stackmaskinkod.
Använd
-help för att få reda på hur den används.
3op2sparc
- Översättare från 3-operandskod till SPARC-assembler.
Använd
-help för att få reda på hur den används.
3opln
- Tar en SPARC-assemblerfil eller objektfil och länkar ihop den
med javalettes runtime-system till en körbar fil.
testlab1
- Testkör automatiskt en kompilator (om inget annat anges
på kommandoraden testas
~/lab1/lab1 ) på alla
testexempel som finns i katalogen ~komp/examples
och kontrollerar att kompilatorns utskrift innehåller ERROR för
felaktiga program och OK för korrekta program.
I ~komp/examples/good och ~komp/examples/bad
Exempel på korrekta och felaktiga Javalette-program.
Verktyg för Haskell
Alex
I /usr/src/cs/pd/alex/alex
finns källkod, dokumentation och exempel
till lexikalanalysatorgeneratorn alex.
Happy
Dokumentation, källkod, mm, för syntaxanalysatorn Happy finns på
hemsidan för Happy.
Haskell-interpretatorer och kompilatorer
- Hugs:
kommandot
hugs startar det interaktiva
Hugs-systemet. Kommandot runhugs
fil.hs
kör funktionen main i fil.hs utan att
starta det interaktiva systemet.
- Kompilatorn
GHC:
det bekvämaste är att kompilera med
hmake .
För att få en körbar fil ska man ge namnet
på filen som innehåller funktionen main , utan
avslutande .hs -suffix.
- Kompilatorn HBC: börjar bli lite gammal...
|