Specyfikacja BNF analizatora leksykalnego
<program>::=<deklaracja>"begin"{<instrukcja>}+"end."
<operacja_przypisania>::= ":="
<cz_deklaracji>::= var
<deklaracja>::= <cz_deklaracji>{<nazwa> ": " <typ_zmiennej>}+
<nazwa>::= <litera> | <litery_cyfry>
<litery_cyfry>::= <litera> | <litery_cyfry><litera_cyfra>
<litera_cyfra>::=<litera> | <cyfra>
<litera>::= "a" | "b" | "c" |
| "z" | "A" |
| "Z" | "_"
<cyfra>::= "0" | "1" | "2" |
| "9"
<liczba>:={<cyfra>}+
<typ_zmiennej>::= integer | real | bool
<wart_bool>::= "true" | "false"
<zmienna>::=<nazwa>
<operator_arytmetyczny>::= + | - | * | /
<operacja_arytmetyczna>::= <zmienna> <operator_arytmetyczny>
<liczba>| <liczba>
<operator_arytmetyczny><zmienna>|
<zmienna> <operator_arytmetyczny>
<operacja_arytmetyczna>| <liczba>
<operator_arytmetyczny><operacja_arytmetyczna> |
<zmienna>
<operator_arytmetyczny><zmienna>|
"("<operacja_arytmetyczna>")"
<operacja_porownania> ::= < | > | = | <= | >=
<koniec_instrukcji>::= ;
<operacja_wejscia>::="read('"<zmienna>"');) " | "readln('"<zmienna>"');) "
<operacja_wyjscia>::="write('"<zmienna>"');) " | "writeln('"<zmienna>"');) "| "write('" <litery_cyfry>"');) " | "writeln('" <litery_cyfry>"');) "
<instrukcja>::= <operacja_wejscia> | <operacja_wyjscia> | <zmienna> <operacja_przypisania>
<operacja_arytmetyczna><koniec_instrukcji> |
<zmienna><operacja_przypisania> <operacja_arytmetyczna>
<koniec_instrukcji> | <zmienna><operacja_przypisania >
<operacja_arytmetyczna ><koniec_instrukcji> |
<instrukcja_warunkowa> | <petla> | <blok_instrukcji>
<blok_instrukcji>::= "begin" {<instrukcja>}<instrukcja> "end"
<warunek>::= <zmienna><operacja_porownania><zmienna> |
<zmienna><operacja_porownania><liczba> |
<zmienna><operacja_porownania><wart_bool>
<instrukcja_warunkowa>::= "if" <warunek> "then" <blok_instrukcji>
["else" <blok_instrukcji>] <koniec_instrukcji> | "if"
<warunek> "then" <instrukcja> ["else" <blok_instrukcji>]
<koniec_instrukcji>
<petla>::= "while" <warunek> "do" <blok_instrukcji> | "while" <warunek> "do"
<instrukcja>
Notacja BNF
|