Initial Commit
This commit is contained in:
7
test/affect-err.l
Normal file
7
test/affect-err.l
Normal file
@@ -0,0 +1,7 @@
|
||||
entier $a;
|
||||
main()
|
||||
{
|
||||
$a = 5;
|
||||
ecrire( $a );
|
||||
}
|
||||
$extra = 0;
|
||||
22
test/affect-err.lex
Normal file
22
test/affect-err.lex
Normal 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
6
test/affect.l
Normal file
@@ -0,0 +1,6 @@
|
||||
entier $a;
|
||||
main()
|
||||
{
|
||||
$a = 1;
|
||||
ecrire($a);
|
||||
}
|
||||
18
test/affect.lex
Normal file
18
test/affect.lex
Normal 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
11
test/boucle.l
Normal 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
40
test/boucle.lex
Normal 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
5
test/expression.l
Normal file
@@ -0,0 +1,5 @@
|
||||
entier $a;
|
||||
main()
|
||||
{
|
||||
ecrire(5 * 2);
|
||||
}
|
||||
16
test/expression.lex
Normal file
16
test/expression.lex
Normal 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
23
test/max.l
Normal 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
72
test/max.lex
Normal 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
57
test/tri.l
Normal 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
271
test/tri.lex
Normal 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
|
||||
Reference in New Issue
Block a user