program | ::= | program (vars)? (definition ; )* begin [instruction ; ... ; instruction] end. |
vars | ::= | var ( varsdecl ; )+ | |||
varsdecl | ::= | [ident , ... , ident] : type | |||
definition | ::= | procedure ident ( [varsdecl ; ... ; varsdecl]? ) ; body | ||||
function ident ( [varsdecl ; ... ; varsdecl]? ) : type ; body | ||||||
body | ::= | (vars)? begin [instruction ; ... ; instruction] end | ||||
instruction | ::= | ident := expression | affectation (d'une variable) | |||
expression [ expression ] := expression | affectation (dans un tableau) | |||||
procedureident ( [expression , ... , expression]? ) | appel de procédure | |||||
begin [instruction ; ... ; instruction] end | séquence | |||||
if expression then instruction else instruction | conditionelle | |||||
while expression do instruction | boucle | |||||
procedureident | ::= | read | write | writeln | ident | trois primitives ou un identificateur général |
expression | ::= | int | true | false | constantes | |||
ident | reférence à une variable | |||||
ident ( [expression , ... , expression]? ) | appel de fonction | |||||
alloc ( expression : type ) | allocation dynamique | |||||
- expression | moins unaire (négation) | |||||
expression binop expression | notation infixe des opérations binaire | |||||
expression [ expression ] | accès dans les tableaux | |||||
( expression ) | parenthésage | |||||
binop | ::= | + | - | / | * | = | <> | < | > | <= | >= | opérateurs binaires |
type | ::= | integer | boolean | ||||
array of type |
Ce document a été traduit de LATEX par HEVEA.