Göm menyn

TDDB29 Kompilatorer och interpretatorer

Laborationer


Själva laborationsuppgifterna finns i katalogen

/home/TDDB29/lab
(ej länkat från denna sida).

Här finns ytterligare information och kommentarer:

Laboration 1

Några små tips inför laboration 1.
Om den första omskrivningen av grammatiken blir felaktig, så blir det förstås också fel när den sedan skrivs om för att eliminera vänsterrekursion. Är den grammtiken som ni kodar efter fel, blir det naturligtvis fel även i koden.
Sensmoral: Det är bra att få feedback, innan ni hunnit göra för mycket...
De enda filerna ni skall behöva ändra i är lab1.hh och lab1.cc.
Använd er av den existerande trace-klassen! Användandet står beskrivet i avsnitt 4 "Supporting Programs" i labbinstruktionerna.
I parser klassen behöver ni ett Scanner objekt och ett Token object. Ett par hjälpfunktioner t ex Scan och Expect är nog vettigt att införa. Till sist, förstås, metoderna som implementerar parsningen av icke-terminalerna.

Laboration 2

I labb 2 är det extremt lite "kod" som skall skrivas, typ 15 rader eller så. Däremot ligger det lite tankeverksamhet bakom. Ni behöver läsa in er ordentligt på flex (se nedan). Den enda fil ni skall behöva ändra i är scanner.l.
I dokumentationen till labben står det att modulen prog/gnu måste vara laddad. Tyvärr finns inte den modulen. Om ni istället försöker med misc/gnu kommer ni nog att lyckas bättre.
Ytterligare ett problem med moduler. Modulen prog/gnat ställde till problem för mig. Se till att den inte är laddad, förmodligen måste ni logga ut och in igen efter att ha tagit bort den. Problemet har förmodligen att göra med att gnat-installationen använder en annan, äldre version av gcc, eller att modulen inte sätter upp patharna ordentligt för kompilering med annat än Ada.
Eftersom AnswerBook inte finns installerat lokalt längre, får ni titta hos SUN för att få mer information om lex. (lex är, som beskrivs i labbdokumentationen, SUN's variant av flex.)
Nu har jag lyckats fixa fram flex-manualen i Postscript format. (Obs! Detta är samma information som finns på man-sidan). Den finns även tillgänglig som gzippad Postscript.
Tutorial on flex.

Laboration 3-4

Ni bör köra med gcc version 2.8.1, inte 2.95.2. [2003-11-26]
Testfilen för lab3-4 har orskakat lite förvirring. Den innehåller en liten bug som kompilatorn bör upptäcka. Jag har lagt till en kommentar i test-filen, så att detta tydligare framgår. [1999-03-05]
Tre filer i ~TDDA28/lab/lab3-4 har uppdaterats [1999-02-26]:
    Makefile
    parser.y
    codegen.cc
    
De första två är buggfixar, den senare bara en uppdatering av kommentarerna. De gamla filerna finns kvar med ändelsen .OLD, så ni kan jämföra dem om ni vill. Använd er t ex av /usr/bin/diff.
Eftersom AnswerBook inte finns installerat lokalt längre, får ni titta hos SUN för att få mer information om yacc. (yacc är, som beskrivs i labbdokumentationen, SUN's variant av bison.)
Nu har jag lyckats fixa fram bison-manualen i Postscript format. Den finns även tillgänglig som gzippad Postscript.
Tutorial on bison

Deadline

The deadline for the labs is the end of the lecture period, that is, 14 december 2007. We expect you to submit your lab reports by that date at the latest. While it will still be possible to submit your lab report to your lab assistant afterwards, we then cannot guarantee that your lab points will be counted as a 2007 result, as we have to prioritize the correction of the exam.

Sidansvarig: Christoph Kessler
Senast uppdaterad: 2007-10-21