Kompilatorkonstruktion, våren 2001

CTH: TDA 280 (4.0p)
GU: INN 300 (5p)

Välkommen Lärare Kurslitteratur Veckoschema Kompilatorprojekt Elrapport Leksaker Länkar

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åndagarTisdagarOnsdagarTorsdagarFredagar
- - 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...
Ändrad senast Saturday 2004-09-18 kl 03:19

Thomas Hallgren
Institutionen för Datavetenskap
Chalmers Tekniska Högskola
[ Valid HTML? | Check Links ]