Sprog og Oversættere (SPO) - F00

Kurset Sprog og Oversættere består som navnet siger af to dele, en sprogdel og en oversætterdel.

Sprogdelen handler om hvilke begreber og sproglige konstruktioner, der indgår i et højniveau programmerings sprog. Formålet med denne del af kurset er: (1) At sætte jer istand til at sætte konkrete programmeringssprog ind i nogle generelle rammer, og derved lettere at kunne skifte fra et sprog til et andet. (2) At sætte jer istand til selv at kunne designe programmeringssprog.

Oversætterdelen, eller compilerdelen som jeg normalt kalder den, beskæftiger sig med hvordan vi så får et program skrevet i et eller andet programmeringssprog til at køre på en computer. Compiledelen består igen af to dele: Oversættelse og køretidsomgivelser. Oversættelsen er, som I allerede ved, den proces, at tage en kildekode og generer en eller anden form for maskinkode. Køretidsomgivelsen er de teknikker og principper vi bruger for at understøtte et programs eksekvering på en computer.

De formelle rammer for kurset kan læses i studieordningen.

Litteratur

Til compilerdelen af kurset vil vi bruge Modern Compiler Implementation in Java af Andrew Appel (vil blive betegnet som Appel på spisesedlerne).

Som supplerende litteratur til compilerdelen kan anbefales Compilers - Principles, Techniques and Tools af Aho, Sethi og Ulmann (i folkemunde kaldet Dragebogen). Bogen er lidt gammel (fra 86), men går virkelig i dybden med mange af de emner, som vi skal behandle i kurset. Jeg vil så vidt muligt angive relevante afsnit fra denne bog som supplerende litteratur på mine spisesedler.

Til sprogdelen af kurset vil jeg primært benytte stof fra Programming Languages - Concepts & Constructs af Ravi Sethi. Dele af denne bog vil I også komme til at bruge i kurest i programmerings paradigmer på DAT3/F7S

Endelig vil jeg til de mere avancerede emner sandsynligvis benytte diverse artikler, som også vil dukke op i kursusmappen.

Sidste semester implementerede jeg det meste af en forende til et lille imperativt programmeringssprog i C++ (og det er med vilje at ikke alt virker). I kan finde den her.

New 25/4-00
Pensum og eksamenssprøgsmål er nu klar.


Oversigt

Indholdet i kursusgangene 13 til 15 skal betragtes som et forslag. Det er min plan at vi skal bruge de sidste tre kursusgange til forskellige lidt mere avancerede emner. Jeg har lavet en liste over forskellige forslag til hvad vi kunne beskæftige os med.

Opgaveregningen er forskudt, således at i opgaveregningstiden til 2. kursugang regner de opgaver, der hører til 1. kursusgang, etc. (Og derfor er der ingen opgaveregning torsdag den 3. februar.)

OBS! Der er ingen SPO forlæsning i uge 10 (6-12 marts).

1.Tors.3/2: Introduktion og leksikalsk analyse.
2.Tirs.8/2: Parsing - top-down.
3.Tors.10/2: Parsing - bottom-up.
4.Tirs.15/2: Parsing - fejl, abstrakte parsetræer.
5.Tors.17/2: Struktureret prg. - statements.
6.Tirs.22/2: Struktureret prg. - data & typer 1.
7.Tors.24/2: Struktureret prg. - data & typer 2.
8.Tirs.29/2: Struktureret prg. - procedurer & funktioner 1.
9.Tors.2/3: Struktureret prg. - procedurer & funktioner 2.
10.Tirs.14/3: Generering af mellemformat.
11.Tirs.21/3: Kodegenerering.
12.Tirs.28/3: Registertildeling.
13.Tirs.4/4: Sammenfatning af compilering og Garbage collection.
14.Tirs.11/4: Garabage collection.
15.Tirs.18/4: Compilere til objekt orienterede sprog.

Til DAT2/F6S hjemmesiden
Josva Kleist <kleist@cs.auc.dk>
Last modified: Tue Apr 25 14:33:00 2000