Šaral 2.0 – špecifikácia jazyka

ŠARAL 2.0 – Šariš Algoritmik Lengvidž 2.0 – špecifikácia jazyka

Poznámka: Príspevok je len prepis pôvodného dokumentu špecifikácia.

Môj návrh vychádza z jazyka Šaral, ktorého prezentáciu v &guot;populárno-vedeckej" forme je možné nájsť napr. na http://www.trsek.com/sr/clanky/saral (odporúčam vypočuť si zvukovú nahrávku dostupnú v spodnej časti stránky).

Platné identifikátory sú postupnosti malých a veľkých písmen, číslic a podtržníkov začínajúce písmenom alebo jedným podrtžníkom a písmenom, teda
_?[:letter:]([:digit:][:letter:]_)*.

Kľúčové slová

Kľúčové slová dimenzion a stuj v návrhu jazyka Šaral 2.0 ostávajú iba pre zachovanie spätnej kompatibility s jazykom Šaral.

Operátory

Typy

Prvé štyri typy sú považované za jednoduché, prvých päť typov za základné. Typ funduš je rozšírený typ.

Trojhodnotová logika

Jazyk Šaral (aj Šaral 2.0) používa trojhodnotovú logiku s hodnotami pravda, ošaľ a skoroošaľ zodpovedajúcimi hodnotam True, False a Unknown v Kleeneho logike. Pri vyhodnocovaní logických výrazov v podmienkach a cykloch sa podmienka vyhodnotí ako pravdivá jedine v prípade, ak je jej hodnota Pravda.

Deklarácia premenných a konštánt

Modifikátor určuje, či bude identifikátor názov predstavovať premennú (meňak) alebo konštantu (furt). Prvý spôsob deklarácie je dovolený iba pre premenné, pri deklarovaní konštanty je potrebné ju hneď aj definovať.

Príklady

Deklarácia polí

Odporúčané je používať prvý spôsob deklarácie, možnosti s kľúčovým slovom dimenzion sú podporované iba kvôli zachovaniu spätnej kompatibility s jazykom Šaral. rozmer musí byť meňak, furt alebo hodnota typu neskutočné numeralio.

Príklady

Definícia procedúr a funkcií

V jazyku Šaral 2.0 sú podporované funkcie a procedúry, ktoré pri pohľade z vonku vyzerajú ako čierne skrinky, resp. bary, do ktorých vstupujú rôzne veci, a občas sa z nich aj niečo vráti. Odtiaľ pochádza aj spôsob ich zápisu v jazyku Šaral 2.0:

Prvý bar nám nevracia nič, kým druhý bar po skončení svojej činnosti vráti jednu hodnotu, ktorá je rovnakého typu ako bar. Pokiaľ niekde chceme využiť služby, ktoré nám ponúkajú bary, použijeme buď kľúčovú konštrukciu paľ do baru alebo vrac mi z baru. Do baru môže vstúpiť len meňak ľubovoľného typu, bar môže vrátiť ľubovoľný základný typ. Funkcie berú ako argumenty referencie na premenné.

Externé funkcie

V jazyku Šaral 2.0 je možné použiť aj bary z cudzokrajných prostredí, v ktorých sa rozpráva iným jazykom (ak sú samozrejme v tých baroch použité rovnaké typy, len inak nazvané, lebo cudzí jazyk). O našej snahe okoštovať takéto cudzie bary informujeme jazyk Šaral pomocou konštrukcie

Príklady

Podmienky

Časti inak povinné nie sú.

Cykly

Cyklus s pevným počtom opakovaní (tiež zvaný kolečko) zapíšeme nasledovne:

premenná v cykle nadobúda hodnoty z intervalu <od;do)

While cyklus zapíšeme nasledovne:

Je však prudko odporúčané dobre si premyslieť použitie druhej konštrukcie s logickým furtom.

Vstup a výstup

stdin/stdout

Ak chceme niečo vypísať, použijeme príkaz ciskaj názov, kde názov je názov meňaku alebo furtu, ktorý treba vypísať. Vstup sa načítava pomocou príkazu vežmi názov, kde názov je názov meňaku, ktorý treba načítať.

nstdin/nstdout

Pre počítače 8. generácie a ich (v dobe vytvorenia jazyka Šaral 1.0) nestandardný vstup a výstup má tento jazyk podporu aj pre inštrukcie povidz názov a sluchaj názov, ktoré možno budú podporované už v jazyku Šaral 2.0 (ak bude čas a podarí sa mi to rozbehať)

Rozšírenie schopností jazyka

V prípade, že máme užitočnú zbierku barov, meňakov, furtov alebo fundušov, môžeme si ich odložiť do skladu. Keď ich opať budeme chcieť použiť, jazyku Šaral 2.0 to oznámime pomocou príkazu falda (sklad) nasledovaného menom skladu (meno súbora). Obsah tohto súbora sa vloží namiesto riadka s príkazom falda. Celé toto sa deje ešte v predspracovaní vstupu a pred lexikálnou analýzou.

Platnosť premenných

Premenné existujú v bloku, v ktorom boli definované. Procedúry a funkcie vidia iba vlastné lokálne premenné, svoje argumenty a funkcie deklarované v súčasnom bloku a v predchádzajúcich blokoch

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *