Na tomto místě je shrnuta gramatika jazyka pro ovládání želvičky.
Na některých místech je popsána pro jednoduchost trochu neformálněji
(např. "cokoliv vyjma uvozovek", nepovinná část kurzívou). Stejně tak
nejsou vůbec uváděny netisknutelné znaky -- ty mají v jazyce čistě
kosmetickou úlohu a místa, kde se mohou vyskytnout, jsou zřejmá
ze zdrojového kódu (volání funkce preskocMezery
).
<PROCEDURA> ::= <SKUPINA_PRIKAZU>
<SKUPINA_PRIKAZU> ::= <PRIKAZ>; | <SKUPINA_PRIKAZU> <PRIKAZ>;
<PRIKAZ> ::= <VPRED> | <OTOC> | <SMAZ> | <OPAKUJ> | <POKUD> | <ZVEDNI> | <POLOZ> | <TLOUSTKA> | <BARVA> | <AT> | <POCITEJ> | <ZELVICKU> | <DOKUD> | <PROVADEJ> | <HODNOTA> | <PRAVDIVOST> | <NAPIS> | <NAZEVPROC>
<NAZEVPROC> ::= <ALF><ZBYTEK>Jméno procedury musí začínat písmenem anglické abecedy, dále může obsahovat pouze písmena anglické abecedy a číslice.
<ZBYTEK> ::= | <ZBYTEK><ALF> | <ZBYTEK><NUM>
<OPAKUJ> ::= opakuj <VYRAZ> krat: <SKUPINA_PRIKAZU> konec;
<POCITEJ> ::= pocitej <PROMENNA> od <VYRAZ> do <VYRAZ> po <VYRAZ>: <SKUPINA_PRIKAZU> konec;Část
po <VYRAZ>
může chybět.<POKUD> ::= pokud <LOGICKY_VYRAZ>: <SKUPINA_PRIKAZU> nebo pokud <LOGICKY_VYRAZ>: <SKUPINA_PRIKAZU> jinak: <SKUPINA_PRIKAZU> konec;
<DOKUD> ::= dokud <LOGICKY_VYRAZ>: <SKUPINA_PRIKAZU> konec;
<PROVADEJ> ::= provadej: <SKUPINA_PRIKAZU> nez <LOGICKY_VYRAZ>
<AT> ::= at <PROMENNA> = <VYRAZ> | at <PROMENNA> je <TYP> | at <TYP> <PROMENNA> = <VYRAZ>
<DOPREDU> ::= dopredu o <VYRAZ>
<TLOUSTKA> ::= tloustka bud <VYRAZ>
<BARVA> ::= barva bud <JMENO_BARVY>
<JMENO_BARVY> ::= cervena | zelena | modra | zluta | bila | cerna | fialova | seda | podzimni | oranzova | ruzova | bledemodra | hneda
<SMAZAT> ::= smazat!
<ZVEDNI> ::= zvedni
<POLOZ> ::= poloz
<HODNOTA> ::= hodnota <VYRAZ>
<PRAVDIVOST> ::= hodnota <LOGICKY_VYRAZ>
<ZELVICKU> ::= zelvicku ukaz | zelvicku skryj
<TYP> ::= cele | desetinne | logicka
<PROMENNA> ::= $<ALFNUM>
<NAPIS> ::= "cokoliv s výjimkou uvozovek"
<ALF> ::= a|b| ... |z|A| ... |Z
<NUM> ::= 0|1| ... |9
<ALFNUM> ::= <ALF> | <NUM> | <ALFNUM><ALF> | <ALFNUM><NUM>
<VYRAZ> ::= <CLEN> | <VYRAZ>+<CLEN> | <VYRAZ>-<CLEN>
<CLEN> ::= <FAKTOR> | <CLEN>*<FAKTOR> | <CLEN>/<FAKTOR>
<FAKTOR_POZITIVNI> ::= <CISLO> | <PROMENNA> | <JMENO_FUNKCE> (<VYRAZ>)Bez unárních znamének.
<FAKTOR> ::= <FAKTOR_POZITIVNI> | +<FAKTOR_POZITIVNI> | -<FAKTOR_POZITIVNI>Rozšiřuje
<FAKTOR_POZITIVNI>
o unární plus a minus.<CISLO> ::= <CAST_CISLA> | <CAST_CISLA>,<CAST_CISLA>
<CAST_CISLA> ::= <NUM> | <CAST_CISLA><NUM>
<JMENO_FUNKCE> ::= sin|cos|ln|log|odm|celacast|zaokrouhlene|ctides|cticele
<LOGICKY_VYRAZ> ::= <LOGICKY_SCITANEC> | <LOGICKY_VYRAZ> nebo <LOGICKY_SCITANEC>
<LOGICKY_SCITANEC> ::= <LOGICKY_CINITEL> | <LOGICKY_SCITANEC> a <LOGICKY_CINITEL>
<LOGICKY_CINITEL> ::= ne <LOGICKY_CINITEL> | (<LOGICKY_VYRAZ>) | <LOGICKA_HODNOTA>
<LOGICKA_HODNOTA> ::= <VYRAZ><ZNAMENKO_POROVNANI><VYRAZ>
<ZNAMENKO_POROVNANI> ::= = | >= | <= | = | > | <