diff --git a/src/l.cfg b/src/l.cfg index 1761dce57acbc622d7d7f99e6f1d873d95abb800..82998c3fb54e674635dc0a0d12c6664c692ca625 100644 --- a/src/l.cfg +++ b/src/l.cfg @@ -55,14 +55,15 @@ exp2 = {egal} exp2 egal exp3 | {inf} exp2 inf exp3 | {exp3} exp3; exp3 = {plus} exp3 plus exp4 | {moins} exp3 moins exp4 | {exp4} exp4; exp4 = {mul} exp4 mul exp5 | {div} exp4 div exp5 | {exp5} exp5; exp5 = {non} non exp5 | {exp6} exp6; -exp6 = {parenthesis} gpar exp dpar | {nombre} nombre | {vrai} vrai | {faux} faux ; +exp6 = {parenthesis} gpar exp dpar | {nombre} nombre | {vrai} vrai | {faux} faux | {lire} lire() ; ins = {affectation} var egal exp | {fairetantque} tantque exp faire bloc | {fonction} id gpar lexp dpar | {sisinon} si exp alors [alors1]: bloc sinon [sinon1]: bloc | {sialors} si exp alors bloc | -{retour} retour exp pvirg; +{retour} retour exp pvirg | +{ecrire} ecrire(e); bloc = {accolades} gacc lins dacc; lins = {lins} ins lins | {epsilon} epsilon; @@ -72,4 +73,17 @@ lexp2 = {virgule} exp virg lexp2 | {exp} exp; var = {id} id | {crochets} id gcro exp dcro; +type = {bool} bool | {entier} entier; +typeopt = {type} type | {epsilon} epsilon; + +decvar = {var} type id | {tableau} type id gcro nombre dcro; + +decfonc = {fonction} type id gpar [params]: ldecvar rpar [locals]: ldecvar bloc; + +ldecvar = {listedecvar} ldecvar2 | {epsilon} epsilon; +ldecvar2 = {listedecvar2} decvar virg ldecvar2 | decvar; + +ldecfonc = {listedecfonc} decfonc ldecfonc | {epsilon} epsilon; + +prog = ldecvar ldecfonc; \ No newline at end of file