Gramatika


Terminální symboly jsou psány malými písmeny, nebo jsou uzavřeny ve složených závorkách (v tom případě jde o vyhrazená slova nebo používané znaky).

Vysvětlení některých symbolů:


S -> P {;} S | e
P -> {DIM} prom {AS} T | {LET} L | {READ} R | {WRITE} W | e

T -> T1 | T2 | T3
T1 -> integer | real
T2 -> string
T3 -> boolean

L -> idint {=} V1 | idreal {=} V1 | idstr {=} V2 | idbool {=} B

R -> idint R1 | idreal R1 | idstr R1 | idbool R1
R1 -> {,} R | e

W -> V W1
W1 -> {,} W | e

V -> V1 | V2
V1 -> E1 E2 E3
V2 -> D1 D2

N -> T1 | idint | idreal
E1 -> N | {-} N | {TRUNC} {(} V1 {)} | {ROUND} {(} V1 {)} | {IF} B {THEN} V1 {ELSE} V1
E2 -> {*} E1 E2 | {/} E1 E2 | {DIV} E1 E2 | {MOD} E1 E2 | e
E3 -> {+} E1 E2 E3 | {-} E1 E2 E3 | e

D1 -> T2 | idstr | {STR} {(} V1 {)}
D2 -> {+} V2 | e

B -> B1 B2 B3
B1 -> V1 F | V2 G | {NOT} B1
B2 -> {AND} B1 B2 | e
B3 -> {OR} B1 B2 B3 | e

F -> {=} V1 | {<>} V1 | {<} V1 | {>} V1 | {<=} V1 | {>=} V1
G -> {=} V2 | {<>} V2 | {<} V2 | {>} V2 | {<=} V2 | {>=} V2