Skip to content

This is an interpreteur for a language that we created similar to python.

Notifications You must be signed in to change notification settings

lilmoham/INTERPRETEUR

Repository files navigation

condition: NON condition
condition:condition {ET OU} condition
condition: eag OPCOMP eag

Pour tester faire make ensuite lancer ./programme avec un test du repertoire test
Le main est dans programme.c
Les tests sont dans le repertoire test , 
    executer ./tester.sh pour executer tout les tests
    il attend apres chaque test un enter pour faire un clear et faire le test suivant
Les tests syntaxiques sont ceux commençant par testsyn
Les tests semantiques sont ceux commençant par testsem
Le reste des test sont des tests exemplaires qu'on a construit ou qu'on a adapter de ressources exterieur.
----------------------------------------------------------------------------------------------------------------------------
Dans notre projet, nous avons parcouru l'ensemble des étapes, débutant par les premières
phases relatives à la calculatrice, au sein desquelles nous avons intégré tous les fonctionnalités
et les fonctionnalités bonus, telles que la prise en charge des nombres décimaux (floats) ainsi
que l'exécution des opérations correspondantes, les operateur en tant que mots “ plus, PLUS,
moins, MOINS, MUL, mul, DIV, div ” …
Par la suite, dans la section dédiée à l'interpréteur, nous avons validé le bon fonctionnement de
chaque instruction en nous appuyant sur les tests fournis dans les diapositives de cours. Nous
avons également mis en place des tests supplémentaires, en plus de ceux inclus dans le zip
fourni, afin de tester lors de la soutenance.
Nous avons enrichi la grammaire avec quelques extensions :
- La possibilité de terminer un fichier par un point-virgule, les instructions de la boucle "tanque"
par un point-virgule, de même les instructions des commandes “si” , comme dans les exemples
ci-dessous, offrant une flexibilité dans la syntaxe.
- Dans le cadre des affectations, la prise en charge des valeurs booléennes via l'opérateur ":=",
ainsi que des affectations classiques à l'aide de "=".
Ce processus exhaustif nous a permis de développer un système complet et fonctionnel,
répondant aux exigences du projet.
La grammaire choisie pour les conditions est la suivante :
	condition : NON condition
	condition : condition {ET, OU} condition
	condition : eag OPCOMP eag
Les instructions :
● ecrire, ex : ecrire(x); , ecrire(5); , ...
● lire, ex : lire(x); , lire(abc); , ...
● affectation normale, ex : x=5; , abc=6; , …
● condition, ex : 3>4, non x<=y, x==y ou z>=t et t!=p, …
● affectation booléenne, ex : x:=3<=5 et non z>y; , x:=d==p; , …
● si condition alors instructions sinon instructions fsi, ex :
si a>=b alors ecrire(x) sinon lire(y) fsi; ,
si a!=b alors
	ecrire(x);
	lire(v);
	ecrire(v);
sinon
	ecrire(t);
	lire(g);
fsi; , …
● tanque condition faire instructions fait, ex :
tanque i<4 faire
	ecrire(x);
	i=i+1;
fait; , …
Pour déclencher les tests pré-écris, on exécute le Makefile et ensuite, on exécute le programme
shell ./test/tester.sh.
LEXEME:
ENTIER : ‘ <seq. de chiffres> ‘
DECIMAL : ‘ <seq. de chiffres> . <seq. de chiffres> ’
PLUS : ‘ + ’ ou ‘ plus ’ ou ‘ PLUS ’
MOINS : ‘ - ’ ou ‘ moins ’ ou ‘ MOINS ‘
MUL : ‘ * ’ ou ‘ mul ’ ou ‘ MUL ’
DIV : ‘ / ’ ou ‘ div ’ ou ‘ DIV ‘
PARO : ‘ ( ‘
PARF : ‘ ) ’
IDF : ‘ <lettre><seq. lettres ou chiffres> ’
AFF : ‘ = ‘
AFFB: ‘ := ‘
SEPINST : ‘ ; ‘
LIRE : ‘ lire ‘
ECRIRE : ‘ ecrire ‘
SI : ‘ si ‘
ALORS : ‘ alors ‘
SINON : ‘ sinon ‘
FSI : ‘ fsi ‘
EQ : ‘ == ‘
NE : ‘ != ‘
LT : ‘ < ‘
LE : ‘ <= ‘
GT : ‘ > ‘
GE : ‘ >= ‘
TANQUE : ‘ tanque ‘
FAIRE : ‘ faire ‘
FAIT : ‘ fait ‘
Grammaire :
pgm –-> seq_inst
seq_inst –-> inst suite_seq_inst
suite_seq_inst –-> SEPINST seq_inst
seq_inst –-> ε
inst –-> IDF AFF eag
inst –-> LIRE PARO IDF PARF
inst —> ECRIRE PARO eag PARF
inst —> SI condition ALORS seq_inst SINON seq_inst FSI
inst —> TANQUE condition FAIRE seq_inst FAIT
condition : NON condition
condition : condition {ET, OU} condition
condition : eag OPCOMP eag
opcomp —> EQ
opcomp —> NE
opcomp —> LT
opcomp —> LE
opcomp —> GT
opcomp —> GE
opbool —> ET
opbool —> OU
opbool —> NON
eag —> seq_terme
seq_terme —> terme suite_seq_terme
suite_seq_terme —> op1 terme suite_seq_terme
suite_seq_terme —> ε
terme —> seq_facteur
seq_facteur —> facteur suite_seq_facteur
suite_seq_facteur —> op2 facteur suite_seq_facteur
suite_seq_facteur —> ε
facteur —> ENTIER
facteur —> DECIMAL
facteur —> PARO eag PARF
facteur —> IDF
op1 —> PLUS
op1 —> MOINS
op2 —> MUL
op2 —> DIV

About

This is an interpreteur for a language that we created similar to python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published