Initial Commit

This commit is contained in:
2016-01-19 14:26:58 +01:00
parent 36baf73cca
commit 02076b62f5
21 changed files with 947 additions and 0 deletions

7
test/affect-err.l Normal file
View File

@@ -0,0 +1,7 @@
entier $a;
main()
{
$a = 5;
ecrire( $a );
}
$extra = 0;

22
test/affect-err.lex Normal file
View File

@@ -0,0 +1,22 @@
entier mot_clef entier
$a id_variable $a
; symbole POINT_VIRGULE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
$a id_variable $a
= symbole EGAL
5 nombre 5
; symbole POINT_VIRGULE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$a id_variable $a
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
$extra id_variable $extra
= symbole EGAL
0 nombre 0
; symbole POINT_VIRGULE
symbole FIN

6
test/affect.l Normal file
View File

@@ -0,0 +1,6 @@
entier $a;
main()
{
$a = 1;
ecrire($a);
}

18
test/affect.lex Normal file
View File

@@ -0,0 +1,18 @@
entier mot_clef entier
$a id_variable $a
; symbole POINT_VIRGULE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
$a id_variable $a
= symbole EGAL
1 nombre 1
; symbole POINT_VIRGULE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$a id_variable $a
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
symbole FIN

11
test/boucle.l Normal file
View File

@@ -0,0 +1,11 @@
entier $i, entier $carre;
main()
{
$i = 0;
tantque $i < 10 faire
{
$carre = $i * $i;
ecrire( $carre );
$i = $i + 1;
}
}

40
test/boucle.lex Normal file
View File

@@ -0,0 +1,40 @@
entier mot_clef entier
$i id_variable $i
, symbole VIRGULE
entier mot_clef entier
$carre id_variable $carre
; symbole POINT_VIRGULE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
$i id_variable $i
= symbole EGAL
0 nombre 0
; symbole POINT_VIRGULE
tantque mot_clef tantque
$i id_variable $i
< symbole INFERIEUR
10 nombre 10
faire mot_clef faire
{ symbole ACCOLADE_OUVRANTE
$carre id_variable $carre
= symbole EGAL
$i id_variable $i
* symbole FOIS
$i id_variable $i
; symbole POINT_VIRGULE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$carre id_variable $carre
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
$i id_variable $i
= symbole EGAL
$i id_variable $i
+ symbole PLUS
1 nombre 1
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
} symbole ACCOLADE_FERMANTE
symbole FIN

5
test/expression.l Normal file
View File

@@ -0,0 +1,5 @@
entier $a;
main()
{
ecrire(5 * 2);
}

16
test/expression.lex Normal file
View File

@@ -0,0 +1,16 @@
entier mot_clef entier
$a id_variable $a
; symbole POINT_VIRGULE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
5 nombre 5
* symbole FOIS
2 nombre 2
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
symbole FIN

23
test/max.l Normal file
View File

@@ -0,0 +1,23 @@
max( entier $a, entier $b )
{
si $a < $b alors {
retour $b;
}
retour $a;
}
main()
entier $v_1, entier $v_2;
{
$v_1 = lire();
$v_2 = lire();
si max( $v_1, $v_2 ) = $v_1 alors
{
ecrire( $v_1 );
}
sinon
{
ecrire( $v_2 );
}
}

72
test/max.lex Normal file
View File

@@ -0,0 +1,72 @@
max id_fonction max
( symbole PARENTHESE_OUVRANTE
entier mot_clef entier
$a id_variable $a
, symbole VIRGULE
entier mot_clef entier
$b id_variable $b
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
si mot_clef si
$a id_variable $a
< symbole INFERIEUR
$b id_variable $b
alors mot_clef alors
{ symbole ACCOLADE_OUVRANTE
retour mot_clef retour
$b id_variable $b
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
retour mot_clef retour
$a id_variable $a
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
entier mot_clef entier
$v_1 id_variable $v_1
, symbole VIRGULE
entier mot_clef entier
$v_2 id_variable $v_2
; symbole POINT_VIRGULE
{ symbole ACCOLADE_OUVRANTE
$v_1 id_variable $v_1
= symbole EGAL
lire mot_clef lire
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
$v_2 id_variable $v_2
= symbole EGAL
lire mot_clef lire
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
si mot_clef si
max id_fonction max
( symbole PARENTHESE_OUVRANTE
$v_1 id_variable $v_1
, symbole VIRGULE
$v_2 id_variable $v_2
) symbole PARENTHESE_FERMANTE
= symbole EGAL
$v_1 id_variable $v_1
alors mot_clef alors
{ symbole ACCOLADE_OUVRANTE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$v_1 id_variable $v_1
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
sinon mot_clef sinon
{ symbole ACCOLADE_OUVRANTE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$v_2 id_variable $v_2
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
} symbole ACCOLADE_FERMANTE
symbole FIN

57
test/tri.l Normal file
View File

@@ -0,0 +1,57 @@
entier $tab[ 10 ];
initialiser()
{
$tab[0] = 8; $tab[1] = 6; $tab[2] = 9;
$tab[3] = 9; $tab[4] = 4; $tab[5] = 2;
$tab[6] = 3; $tab[7] = 1; $tab[8] = 4;
$tab[9] = 5;
}
afficher( entier $n )
entier $i;
{
$i = 0;
tantque $i < $n faire {
ecrire( $tab[ $i ] );
$i = $i + 1;
}
ecrire( 0 ); # marqueur fin de tableau
}
echanger( entier $i, entier $j )
entier $temp;
{
$temp = $tab[ $j ];
$tab[ $j ] = $tab[ $i ];
$tab[ $i ] = $temp;
}
trier( entier $n )
entier $echange, entier $j, entier $m;
{
$m = $n;
$echange = 1;
tantque $echange = 1 faire
{
$echange = 0;
$j = 0;
tantque $j < $m - 1 faire
{
si $tab[ $j + 1 ] < $tab[ $j ] alors {
echanger( $j, $j + 1 );
$echange = 1;
}
$j = $j + 1;
}
$m = $m - 1;
}
}
main()
{
initialiser();
afficher( 10 );
trier( 10 );
afficher( 10 );
}

271
test/tri.lex Normal file
View File

@@ -0,0 +1,271 @@
entier mot_clef entier
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
10 nombre 10
] symbole CROCHET_FERMANT
; symbole POINT_VIRGULE
initialiser id_fonction initialiser
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
0 nombre 0
] symbole CROCHET_FERMANT
= symbole EGAL
8 nombre 8
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
1 nombre 1
] symbole CROCHET_FERMANT
= symbole EGAL
6 nombre 6
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
2 nombre 2
] symbole CROCHET_FERMANT
= symbole EGAL
9 nombre 9
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
3 nombre 3
] symbole CROCHET_FERMANT
= symbole EGAL
9 nombre 9
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
4 nombre 4
] symbole CROCHET_FERMANT
= symbole EGAL
4 nombre 4
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
5 nombre 5
] symbole CROCHET_FERMANT
= symbole EGAL
2 nombre 2
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
6 nombre 6
] symbole CROCHET_FERMANT
= symbole EGAL
3 nombre 3
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
7 nombre 7
] symbole CROCHET_FERMANT
= symbole EGAL
1 nombre 1
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
8 nombre 8
] symbole CROCHET_FERMANT
= symbole EGAL
4 nombre 4
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
9 nombre 9
] symbole CROCHET_FERMANT
= symbole EGAL
5 nombre 5
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
afficher id_fonction afficher
( symbole PARENTHESE_OUVRANTE
entier mot_clef entier
$n id_variable $n
) symbole PARENTHESE_FERMANTE
entier mot_clef entier
$i id_variable $i
; symbole POINT_VIRGULE
{ symbole ACCOLADE_OUVRANTE
$i id_variable $i
= symbole EGAL
0 nombre 0
; symbole POINT_VIRGULE
tantque mot_clef tantque
$i id_variable $i
< symbole INFERIEUR
$n id_variable $n
faire mot_clef faire
{ symbole ACCOLADE_OUVRANTE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$i id_variable $i
] symbole CROCHET_FERMANT
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
$i id_variable $i
= symbole EGAL
$i id_variable $i
+ symbole PLUS
1 nombre 1
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
ecrire mot_clef ecrire
( symbole PARENTHESE_OUVRANTE
0 nombre 0
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
echanger id_fonction echanger
( symbole PARENTHESE_OUVRANTE
entier mot_clef entier
$i id_variable $i
, symbole VIRGULE
entier mot_clef entier
$j id_variable $j
) symbole PARENTHESE_FERMANTE
entier mot_clef entier
$temp id_variable $temp
; symbole POINT_VIRGULE
{ symbole ACCOLADE_OUVRANTE
$temp id_variable $temp
= symbole EGAL
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$j id_variable $j
] symbole CROCHET_FERMANT
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$j id_variable $j
] symbole CROCHET_FERMANT
= symbole EGAL
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$i id_variable $i
] symbole CROCHET_FERMANT
; symbole POINT_VIRGULE
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$i id_variable $i
] symbole CROCHET_FERMANT
= symbole EGAL
$temp id_variable $temp
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
trier id_fonction trier
( symbole PARENTHESE_OUVRANTE
entier mot_clef entier
$n id_variable $n
) symbole PARENTHESE_FERMANTE
entier mot_clef entier
$echange id_variable $echange
, symbole VIRGULE
entier mot_clef entier
$j id_variable $j
, symbole VIRGULE
entier mot_clef entier
$m id_variable $m
; symbole POINT_VIRGULE
{ symbole ACCOLADE_OUVRANTE
$m id_variable $m
= symbole EGAL
$n id_variable $n
; symbole POINT_VIRGULE
$echange id_variable $echange
= symbole EGAL
1 nombre 1
; symbole POINT_VIRGULE
tantque mot_clef tantque
$echange id_variable $echange
= symbole EGAL
1 nombre 1
faire mot_clef faire
{ symbole ACCOLADE_OUVRANTE
$echange id_variable $echange
= symbole EGAL
0 nombre 0
; symbole POINT_VIRGULE
$j id_variable $j
= symbole EGAL
0 nombre 0
; symbole POINT_VIRGULE
tantque mot_clef tantque
$j id_variable $j
< symbole INFERIEUR
$m id_variable $m
- symbole MOINS
1 nombre 1
faire mot_clef faire
{ symbole ACCOLADE_OUVRANTE
si mot_clef si
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$j id_variable $j
+ symbole PLUS
1 nombre 1
] symbole CROCHET_FERMANT
< symbole INFERIEUR
$tab id_variable $tab
[ symbole CROCHET_OUVRANT
$j id_variable $j
] symbole CROCHET_FERMANT
alors mot_clef alors
{ symbole ACCOLADE_OUVRANTE
echanger id_fonction echanger
( symbole PARENTHESE_OUVRANTE
$j id_variable $j
, symbole VIRGULE
$j id_variable $j
+ symbole PLUS
1 nombre 1
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
$echange id_variable $echange
= symbole EGAL
1 nombre 1
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
$j id_variable $j
= symbole EGAL
$j id_variable $j
+ symbole PLUS
1 nombre 1
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
$m id_variable $m
= symbole EGAL
$m id_variable $m
- symbole MOINS
1 nombre 1
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
} symbole ACCOLADE_FERMANTE
main id_fonction main
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
{ symbole ACCOLADE_OUVRANTE
initialiser id_fonction initialiser
( symbole PARENTHESE_OUVRANTE
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
afficher id_fonction afficher
( symbole PARENTHESE_OUVRANTE
10 nombre 10
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
trier id_fonction trier
( symbole PARENTHESE_OUVRANTE
10 nombre 10
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
afficher id_fonction afficher
( symbole PARENTHESE_OUVRANTE
10 nombre 10
) symbole PARENTHESE_FERMANTE
; symbole POINT_VIRGULE
} symbole ACCOLADE_FERMANTE
symbole FIN