-
Notifications
You must be signed in to change notification settings - Fork 0
lilmoham/INTERPRETEUR
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published