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

