classe ® class ident ``{'' decls methmain ``}'' classe($2,$4,$5)
ident ® identificateur ident($1)
decls ® decl ``;'' decls | vide decls($1,$2) | vnil
decl ® typemeth ident ``['' exp ``]'' | tableau($1,$2,$4)
typemeth ident vexp | var($1,$2,$3)
typemeth ident ``('' entetes ``)'' ``{'' vars instrs ``}'' | methode($1,$2,$4,$7,$8)
final type ident vexp cst($2,$3$4)
vars ® var ``;'' vars | vide vars($1,$3) | vnil
var ® typemeth ident ``['' exp ``]'' | tableau($1,$2,$4)
typemeth ident vexp | var($1,$2,$3)
final type ident vexp cst($2,$3$4)
vexp ® ``='' exp | vide $2 | omega
methmain ® main ``{'' vars instrs ``}'' main($4,$5)
entetes ® entete (``,'' entetes | entetes($1,$3)
enil) | entetes($1,enil)
vide enil
entete ® type ident entete($1,$2)
instrs ® instr ``;'' instrs | vide instrs($1,$3) | inil
instr ® ident ``['' exp ``]'' ``='' exp | affectation(tab($1,$3),$6)
ident ``='' exp | affectation($1,$3)
ident ``['' exp ``]'' ``+='' exp | somme(tab($1,$3),$6)
ident ``+='' exp | somme($1,$3)
ident ``['' exp ``]'' ``++'' | increment(tab($1,$3))
ident ``++'' | increment($1)
ident ``('' listexp ``)'' | appelI($1,$3)
return exp | retour($2)
if exp ``{'' instrs ``}'' | si($2,$4,inil)
if exp ``{'' instrs ``}'' else ``{'' instrs ``}'' | si($2,$4,$8)
while exp ``{'' instrs ``}'' tantque($2,$4)
listexp ® exp (``,'' listexp | listexp($1,$3)
| exnil) | listexp($1,exnil)
vide exnil
exp ® ``!'' exp1 ``&&'' exp1 | et(non($2),$4)
``!'' exp1 ``||'' exp1 | ou(non($2),$4)
``-'' exp1 ``&&'' exp1 | et(moins($2),$4)
``-'' exp1 ``||'' exp1 | ou(moins($2),$4)
exp1 ``&&'' exp1 | et($1,$3)
exp1 ``||'' exp1 | ou($1,$3)
exp1 ® exp2 ``=='' exp2 | egal($1,$3)
exp2 ``>'' exp2 | exp2 pgq($1,$3) | $1
exp2 ® terme ``+'' terme | plus($1,$3)
terme ``-'' terme | terme soustrac($1,$3) | $1
terme ® terme ``*'' fact | multi($1,$3)
terme ``/'' fact | fact div($1,$3) | $1
fact ® ident ``('' listexp ``)''| appelE($1,$2)
ident ``['' exp ``]'' | ident | tab($1,$2) | $1
true | false | vrai | faux
nombre | ``('' exp ``)'' nbre($1) | $2
ident1 ® ident | ident ``['' exp ``]'' $1 | tab($1,$3)
typemeth ® void | type rien | $1
type ® int | boolean entier | booleen

This document was translated from LATEX by HEVEA.