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
