Télécharger la présentation
Publié parAnaïs Perrin Modifié depuis plus de 11 années
1
Groupe IHM Isabelle BONDOUX Cédric CASTAGNE Samy FOUILLEUX
Damien BARON Maxime CHAMBREUIL UV d’Algorithmique - ASI3 - Année 2001 / 2002
2
Déroulement Notre rôle et notre conception de l’IHM
Lexèmes fixés et génériques La grammaire Le Lex Le Yacc UV d’Algorithmique - ASI3 - Année 2001 / 2002
3
Notre rôle et notre conception de l’IHM
Ce que rentre l’utilisateur Ce que nous en faisons Ce que nous retournerons, un jour…avant le mois de juillet UV d’Algorithmique - ASI3 - Année 2001 / 2002
4
Lexèmes fixés et génériques
Def: ensemble de caractères formant une unité sémantique Opérateurs de base : =,+,-,*,/,div Opérateurs sur les entiers : !, A , C Chiffre: ‘0’, ‘1’, …, ‘9’ NbeEntier: chiffre (chiffre)* UV d’Algorithmique - ASI3 - Année 2001 / 2002
5
La grammaire 1/2 Arbre de priorité Exemple:
Facteur Terme | Facteur OpMaj Facteur | (Expr1) Terme NbeReel | NbeEntier | Constante | Matrice OpMaj * | / | div | mod | ^ | . Constante PI | e | PHI | EM UV d’Algorithmique - ASI3 - Année 2001 / 2002
6
La grammaire 2 / 2 Associativité Exemple :
4 * 3 * 2 = ( 4 * 3 ) * 2 à gauche 4 * 3 * 2 = 4 * ( 3 * 2 ) à droite UV d’Algorithmique - ASI3 - Année 2001 / 2002
7
Le Lex 1 / 2 Analyseur lexical = découpage de la chaîne de caractères
Il reconnaît le type des expressions saisies Il envoie au Yacc la valeur et le type d’une expression reconnue UV d’Algorithmique - ASI3 - Année 2001 / 2002
8
Le Lex 2 / 2 %{#include<stdlib.h> %} chiffre [0-9] %%
« div » {return DIV;} {chiffre}+ {return creerEntierInfiniAPartirDe(yytext);} [ \t\n] {yyerror (« Caractère inconnu »);} main() {yylex();} UV d’Algorithmique - ASI3 - Année 2001 / 2002
9
Le Yacc 1 / 3 Analyseur grammatical Il appelle les fonctions de calcul
Il affiche le résultat et les erreurs du programme UV d’Algorithmique - ASI3 - Année 2001 / 2002
10
Le Yacc 2 / 3 %{#include « Matrice.h »
typedef struct {…} typeRetourneParDollar; %} %union{ EntierInfini entier;}; %token <entier> NbeEntier %left ‘=‘, ‘+’,’’-’ %type <dollar> S Expr1 … Facteur Terme %start Program %% UV d’Algorithmique - ASI3 - Année 2001 / 2002
11
Le Yacc 3 / 3 %% Program:S’\n’ {afficher($1);}
S:Variable’=‘Expr1 {$$=affecter($1,$3);} | Expr1 {$$=$1;} ; void yyerror(char* s) {printf(stdout, »%s\n », s);} int main (void) {yyparse(); return 0;} UV d’Algorithmique - ASI3 - Année 2001 / 2002
12
La Compilation bison –d virgule.y produit les fichiers virgule.tab.c et virgule.tab.h flex virgule.lex produit le fichier lex.yy.c gcc lex.yy.c virgule.tab.c UV d’Algorithmique - ASI3 - Année 2001 / 2002
13
Conclusion Les fichiers lex et yacc compilent !!!
Reste à faire : récupérer les .o et débuguer Nous avons découvert : La compilation, Lex et Yacc, l’IHM Organisation du travail en groupe Motivés pour l’UV Libre ??? UV d’Algorithmique - ASI3 - Année 2001 / 2002
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.