Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
1 result

Target

Select target project
No results found
Select Git revision
  • main
1 result
Show changes
Commits on Source (2)
......@@ -11,9 +11,37 @@ Tokens
espaces = (' ' | 13 | 10)+;
commentaire= '#' [[0 .. 0xffff] - [10 + 13]]* (10 | 13 | 10 13);
plus = '+';
nombre = chiffre+;
ou = '|';
et = '&';
egal = '=';
inf = '<';
infegal = '<=';
sup = '>';
supegal = '>=';
plus = '+';
moins = '-';
mul = '*';
div = '/';
non = '!';
gpar = '(';
dpar = ')';
vrai = 'vrai';
faux = 'faux';
tantque = 'tantque';
faire = 'faire';
pvirg = ';';
si = 'si';
alors = 'alors';
sinon = 'sinon';
retour = 'retour';
gacc = '{';
dacc = '}';
epsilon = ;
id = alpha[alpha + chiffre]+;
gcro = '[';
dcro = ']';
virg = ',';
Ignored Tokens
......@@ -21,12 +49,41 @@ espaces, commentaire;
Productions
// l'axiome
exp = {ou} exp ou exp1 | {exp1} exp1;
exp1 = {et} exp1 et exp2 | {exp2} exp2;
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 | {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 |
{ecrire} ecrire(e);
bloc = {accolades} gacc lins dacc;
lins = {lins} ins lins | {epsilon} epsilon;
lexp = {lexp2} lexp2 | {epsilon} epsilon;
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;
programme = exp ;
decfonc = {fonction} type id gpar [params]: ldecvar rpar [locals]: ldecvar bloc;
exp =
{plus} exp plus nombre |
{nb} nombre ;
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