# Oups, cette version n'est pas necessairement a jour. # consultez la version html en cas de doute program -> program identificateur ; {liste_declarations} {declaration_methodes} instruction_composee liste_declarations -> declaration {liste_declarations} declaration -> var declaration_corps ; declaration_corps -> liste_identificateurs : type liste_identificateurs -> identificateur {, liste_identificateurs } type -> standard_type | array [ num .. num ] of standard_type standard_type -> integer declaration_methodes -> declaration_methode { ; declaration_methodes } declaration_methode -> entete_methode {liste_declarations} instruction_composee entete_methode -> procedure identificateur {arguments} ; arguments -> ( liste_parametres ) liste_parametres -> declaration_corps {; liste_parametres } instruction_composee -> begin {liste_instructions} end liste_instructions -> instruction { ; liste_instructions} instruction -> lvalue := expression | appel_methode | instruction_composee | if expression then instruction else instruction | while expression do instruction | write ({liste_expressions}) | read (liste_identificateurs) lvalue -> identificateur { [expression] } appel_methode -> identificateur ( {liste_expressions} ) liste_expressions -> expression {, liste_expressions} expression -> facteur {addop facteur} | facteur {mulop facteur} mulop -> * | / addop -> + | - facteur -> identificateur {[expression]} | literal_entier | ( expression )