Kääntäjätekniikka

Luento 9 (18.4.2017)

Lähiviikkojen aikatauluista

  • torstain 20.4. luento Auditorio 3:ssa
  • perjantaina 21.4. ei ohjauksia
  • maanantaina 24.4. ohjaukset normaalisti
  • perjantaina 28.4. vaihepalautus (tarkastaja) ja ohjaus

Inkrementit

(deadlineja päivitetty 1.6.2017)

Alustava deadline sulkeissa (klo 16 kyseisenä päivänä ellei muuta ilmoitettu)

  1. Suunnittelu ja ryhmien muodostaminen (20.3.)
  2. Jäsentäjä valmis (perjantai 7.4. klo 10)
  3. Tarkastaja valmis (perjantai 5.5. klo 10)
  4. Välikielen generointi valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (15.5.)
  5. Kohdekielen generointi (naivi rekisteriallokaatio) valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (19.6.)
  6. Fiksu rekisteriallokaatio valmis [tai muita ominaisuuksia 1 op:n arvosta lisää] (14.8. klo 12)
  7. Koko työ viimeistelty ja valmis tarkastettavaksi (28.8. klo 12)

Jatketaan tyyppitarkastuksesta

Tietueet

  • Tietuemääritelmä määrittelee uuden tyyppinimen ja koostuu tietueen sisällä näkyvistä muuttujamäärittelyistä (ilman alustusta) eli kentistä.
  • Tietuemäärittelystä on tarkastettava, että
    • samaa kenttää ei määritellä useasti,
    • kenttien tyypit ovat sellaiset, että ne kelpaavat tähän käyttöön.
  • Tietuetta käytetään projektio-operaattorilla e.l; siitä on tarkastettava, että
    • e:llä on tietuetyyppi ja
    • l on e:n tyypissä määritelty kenttä.
    • Tällaisen lausekkeen tyyppi on l:lle e:n tyypissä määritelty tyyppi.
    • Tällaisella lausekkeella on lvalue, jos e:llä on lvalue.

Varianttityyppi

  • Varianttityyppi on kuin tietue, mutta sen kentät ovat muistissa päällekkäin, ei peräkkäin.
  • Vain yksi variantin kentistä on aktiivinen kulloinkin. Varianttiin sisältyy lisäksi tieto siitä, mikä kentistä on aktiivinen.
    • ns. tagged union (toisin kuin C:n union)
  • Tyyppitarkastus kuten tietueelle.
  • Lisäksi variantti tarjoaa
    • jonkin tavan selvittää, mikä kenttä on kulloinkin aktiivinen, esim. sopivasti muokattu switch–case-lause
    • jonkin tavan asettaa variantin arvo aktiivinen kenttä valiten

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.