Sfairadora

  • Referenční příručka

Jazyk Enki

Jazyk Enki slouží ve Sfairadoře k zadávání výrazů a funkcí. Cílem bylo jednak umožnit zadávání velmi jednoduchých výrazů (jako (a+b)/2) bez zbytečných syntaktických komplikací, zároveň však neomezovat složitější užití jazyka. Proto jazyk obsahuje konstrukce pro ošetření chyb, práci se složenými typy. Smyčka for umožňuje snadné vyhledávání a agregaci hodnota a podobně.
Jak je obvyklé u moderních programovacích jazyků, Enki má volnou syntax. To znamená, že jednotlivé identifikátory, klíčová slova a operátory jsou odděleny prázdným místem, přičemž za prázdné místo se považuje libovolné množství mezer, tabulátorů a nových řádků. Na místě volného místa může být i komentář. Pokud identifikátor předchází nebo následuje operátor složený z nealfanumerických znaků (jako '+', '=', '!' a pod.) nemusí se oddělovat mezerou (například x + y lze zapsat i bez mezer x+y).
Na rozdíl od ostatních programovacích jazyků, Enki umožňuje, aby identifikátory obsahovaly i znaky s diakritickými znaménky.
Jazyk zhruba vychází ze struktury jazyků jako je C, Java, PHP a podobně, nicméně uvolňuje některá jejich omezení. Především se nerozlišuje mezi příkazem nevracejícím hodnotu a výrazem vracejícím hodnotu – v Enki všechny konstrukce jazyka vracejí hodnotu, takže funkce (program) v jazyce Enki je v principu vždy jeden výraz. Z toho plynou některé důsledky. Především se nerozlišuje mezi kulatými závorkami výrazů a složenými závorkami příkazů – pro seskupování částí kódu se používají pouze kulaté závorky. (Složené závorky se používají pro zápis hodnot složených typů.) Například:
if(x>0)
(
a = 1;
b = 1
)
else
(
x = 0;
)
Dále, jak je vidět na příkladu výše, středník neukončuje příkaz (protože pojem příkazu jazyk Enki nezná), ale spojuje dva výrazy tak, že výsledkem takto získaného spojení výrazů je výsledek druhého v pořadí (středník v Enki tedy funguje analogicky operátoru čárka v jazyce C). Syntaktickým důsledkem je, že se středník nemusí psát za poslední výraz (nicméně může, nemá pak žádnou funkci). Nesmí však být uveden na některých místech, jako před else.
Skutečnost, že veškeré konstrukce jazyka vracejí hodnotu má výhodu v tom, že lze psát konstrukce jako:
x = if(y>0) a/y else 0
Výsledkem operátoru if je výsledek větve, která se vyhodnotila. Takže ve výše uvedeném případě se do x přiřadí podíl a/y pokud bylo y větší než nula, v ostatních případech se do x přiřadí nula.
Před studiem této kapitoly je vhodné zvládnout kapitolu o datovém modelu Sfairadory a především pojednání o datových typech.

Praktické poznámky

Pro praktické užití jazyka Enki je velmi užitečná položka nabídky Vložit, která v editor funkce editujícím jazyk Enki obsahuje všechny konstrukce jazyka Enki, funkce, operátory a v neposlední řadě nabídku všech datových položek dostupných z dané funkce.
Pro testování příkladů v jazyce Enki je možné použít políčko pro rychlé vyhodnocování výrazů umístěné v sekci dokumentu Definice, podsekce Funkce. vytvořit. Je rovněž možné počítanou položku v sekci dokumentu Pohledy. To je vhodné, pokud výraz vrací skalární hodnotu (neskalární lze případně přetypovat na String) a nemá žádné vedlejší efekty. Pokud je naopak potřeba otestovat funkci, která provádí nějakou manipulaci s daty dokumentu nebo zobrazením, je lepší vytvořit v sekci dokumentu Zobrazení ovládací prvek tlačítko a jeho akci nastavit na vyhodnocení výrazu jazyka Enki.