Interpreter Pascala MGA
Specyfication BNF.
only in Polish now.
<pascalprog> :: = program <nazwa>; var <deklaracja> begin {<body>} end.
<identyfikator>:: = <znak> | {<znak>}
<znak>::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<cyfra> ::= 0|1|2|3|4|5|6|7|8|9
<deklaracja> ::= <identyfikator>:<typ>;
<typ>::= integer|float
<body> ::= <operacja>|<petla>|<if>|<operacja_przypisania>
<operacja_przypisania>::= <identyfikator>:=<liczbaC>|<liczbaR>|<identyfikator>;
<liczbaC>::=1..9{<cyfra>}|-1..9{<cyfra>}
<liczbaR>::= <liczbaC>.0|1|2|3|4|5|6|7|8|9{<cyfra>}
<operacja>::= <operacja_przypisania>+ | - | * | /
<identyfikator>|<liczbaC>|<liczbaR>;
<if>::=if <nawiasL><warunek_logiczny><nawiasP>then begin<body>end else begin<body>end;
<warunek_logiczny>::= <warunek>|<warunek><operator_logiczny><warunek>
<warunek>::= <nawiasL><identyfikator> <operator_porownania> <identyfikator>|<liczbaC>|<liczbaR><nawiasP>
< operator_porównania> ::= = |<|>|<>|<=|>=
<operator_logiczny>::=and|or
<nawiasL>::=(
<nawiasP>::=)
<petla>::=while<nawiasL><warunek_logiczny><nawiasP>begin<body>end;
<operacja_wejscia>::=read <nawias> <identyfikator> <nawias> | readln <nawias> <identyfikator> <nawias>;
<operacja_wyjscia>::=write <nawias> <identyfikator> <nawias>| write <nawias>{ <tekst>} <nawias> |
writeln <nawias> <identyfikator> <nawias>| writeln <nawias>{ <tekst>} <nawias>;
<tekst> ::= <tekst_poczatek><litery> <cyfry> | <znaki_specjalne> | {tekst} <tekst_koniec>
<znaki_specjalne> ::= ! | @ | # | $ | % | ^ | & | * | _ | = | [ | ] | ; | : | ‘ | „ | ` | ~ | , | < | . | > | ? | / | | | \ |
<tekst_poczatek>::= <czudzyslow>
<tekst_koniec>::= <czudzyslow>
<czudzyslow>::= ”