kazdy vstup programu je jeden prikaz, kde: prikaz je bud prirazeni; nebo podmineny_prikaz nebo prikaz_cyklu nebo blok_prikazu podmineny_prikaz je if( podminka ) prikaz_pri_splneni; [else prikaz_pri_nesplneni;] fi prikaz_cyklu je for( prirazeni_pred_cyklem; podminka_trvani; prirazeni_pred_opakovanim ) prikaz; blok_prikazu je do {prikaz} done prirazeni je bud nic nebo symbol:=vyraz nebo vyraz (prirazeni nikam) vyraz je logicky vyraz logicky vyraz je relacni vyraz nebo vice relacnich vyrazu spojenych logickymi operatory (not, and, if) relacni vyraz je aritmeticky vyraz nebo vice aritmetickych vyrazu spojenych relacnimi operatory (=, <, >, <=, >=, <> ... vraci 1 jako pravda, 0 jako nepravda) aritmeticky vyraz je term (clen) nebo vice termu spojenych aditivnimi operatory (+, -) term je faktor (cinitel) nebo vice faktoru spojenych aditivnimi operatory (*, /, \, %) faktor je mantisa/exponent nebo vice jich spojenych mocnitkem (^) (prava asociativita) mantisa/exponent je citatel/jmenovatel nebo vice jich ve zlomku (: (lomeni), # (nasobeni)) (prava asociativita), na konci jsou posfixove operatory (! (faktorial), ' (inverzni hodnota), °(deg2rad)) citatel/jmenovatel je cislo nebo symbol nebo volani funkce nebo vyraz v zavorkach volani funkce je identifikator_funkce(argumenty) argumenty jsou vyrazy nebo retezce oddelene carkou retezec je "znaky" -------------------- rozsireni gramatiky: unarni +/- se mohou vyskytovat za sebou a vztahuji se k nejblizsimu prvku vpravo s nejnizsi prioritou (-3^-2 <=> -(3^-(2))) vice mantis/exponentu za sebou bez operatoru ^ mezi nimi je vyhodnoceno jako jejich soucin (umoznuje zapis 3sin 2x <=> 3*(sin(2*x)) argumenty bez zavorek okolo jsou nacteny jako 1 faktor (umoznuje zapis sin x <=> sin(x)) ve volani funkce muze byt mezi identifikatorem_funkce a argumenty mocneni (mocnitko a mantisa/exponent) (umoznuje zapis sin^2(x) <=> (sin(x))^2)