Attribuuttikielioppi

Attribuuttikielioppi määrittelee attribuutit formaalin kielen pääte- ja välikesymboleille sekä produktioille ominaiset laskusäännöt, joissa attribuuttien arvoja käytetään. Laskusääntöjä kutsutaan myös semanttisiksi toiminnoiksi. Laskusäännöillä ei saa olla sivuvaikutuksia. Kieliopista voidaan muodostaa abstrakti syntaksipuu ja attribuuttien laskusäännöt ovat puun solmukohdissa. Attribuutit voivat olla joko synteettisiä tai periytyneitä. Synteettiset attribuutit ovat aina attribuuttien laskusääntöjen tuloksista saatuja ja periytyneet ovat vanhemmilta solmukohdilta saatuja. [1]

Esimerkki

Esimerkin Yhteydetön kielioppi kuvaa kielen, jolla voi kirjoittaa yksinkertaisia matemaattisia lauseita:

Kielioppi
Expr Expr + Term
Expr Term
Term Term * Factor
Term Factor
Factor "(" Expr ")"
Factor integer

Alla esitettyllä attribuuttikieliopilla pystyy laskemaan lukuarvoja kirjoitetuista lausekkeista. Kielioppi käyttää vain synteettisiä attribuutteja, joten se on S-attribuuttikielioppi.

KielioppiSemanttiset toiminnot
Expr1 Expr2 + Term[ Expr1.value = Expr2.value + Term.value ]
Expr Term[ Expr.value = Term.value ]
Term1 Term2 * Factor[ Term1.value = Term2.value * Factor.value ]
Term Factor[ Term.value = Factor.value ]
Factor "(" Expr ")"[ Factor.value = Expr.value ]
Factor integer[ Factor.value = stringToInteger(integer.string) ]

Lähteet

  1. Aho, Sethi, Ullman: Compilers: Principles, Techniques and Tools. Addison-Wesley, 1987. englanti
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.