Atributy

Atributy nebudou napevno zadratovany do syntaxe jazyka. Misto toho kompilator nacte tabulku popisujici syntaxi atributu z externiho souboru. atributy neovlivniji kompilaci, jen se jejich hodnoty ci pritomnost pripoji k vyslednemu .code souboru.

Nektere polozky je mozno deklarovat vicekrat, to prinasi i moznost vicekrat zadeklarovat atributy. Podobna situace nastava i v pripade ze se atributy dedi ze skupiny na prvky skupiny. Pak:

  • pokud jde o atributy ruznych jmen, plati oba
  • pokud dojde ke konfliktu jmen, stara definice atributu se rusi, nahradi ji nova. (Tohle nekdy zavisi na poradi prekladu, a nemusi tedy byt uplne jasny, co se pouzije, takze pozor!)
  • je mozno pouzit syntaxi: !Atribut, ktera atribut oddefinuje.

Poznamka: zatim jsem se rozhodl nepodporovat kumulativni atributy

Typ atributu

  • Bool - Atribut nema hodnotu, jen je bud pritomen nebo nepritomen
  • int
  • char
  • double
  • name
  • enum (nad typem int) - atributy mohou nabyvat hodnot z predem daneho vyctu (misto cisel se samozrejme pouzivaji konstanty)
  • orovatelny enum - to same akorat konstanty lze spojovat pomoci |
  • pole vsech drive jmenovanych typu krome Bool. Je mozne mit i vice dimenzi

Zpusob zadani

  • hodnota - Atribut = x
  • porovnani - Atribut < x, x <= Atribut
  • interval (musi jit o ciselny typ) - Atribut = x .. y

Platnost

  • KSID jmeno
    • libovolne
    • specificky typ
  • polozka
    • jakakoli
    • specificka (promenna, metoda, editacni polozka, ...)
  • atribut muze byt dedicny (jen pro polozky) - pak je mozne ho uvest u kterekoli skupinove polozky, atribut se pak pouzije na vsechny podpolozky te skupiny, pokud odpovida platnost