Keywords : FUN, if, else, do, while, read, write
Program ::= FUN() { Stmts } /* There is only one function that returns an integer */
Stmts ::= Stmts Stmt | Stmt
Stmt ::= AsgStmt | IfStmt | IfElseStmt | WhileStmt | ReadStmt | WriteStmt
AsgStmt ::= VAR = E;
IfStmt ::= If (E) { Stmts }
IfElseStmt ::= If (E) { Stmts } else { Stmts }
WhileStmt ::= do { Stmts } while (E);
ReadStmt ::= read(VAR); /* Reads an integer into a variable */
WriteStmt ::= write(E); /* Prints an integer expression */
E ::= E + E | E - E | E * E | E <= E | E >= E | E == E | E != E | (E) | NUM | VAR /* All expressions evaluate to integer values, as in C */
NUM :== digit(digit)∗
VAR :== letter(letter|digit)∗ /* Variables can store only integers */