salut
je suis chargée de faire un analyseur lexical développé en langage C, j'arrive pas à faire
salut
je suis chargée de faire un analyseur lexical développé en langage C, j'arrive pas à faire
Et on ne va pas le faire à ta place.
Où bloques-tu?
Qu'est-ce que tu ne comprend pas?
Il y a une fonction de recherche sur le forum, l'as tu testé ?
http://www.developpez.net/forums/sea...archid=8107678
voila se que j'arrive a faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 #include <stdio.h> #include <ctype.h> Int NumLigne = 1; Int Vallex = RIEN; Int AnalLex() { int T; While(1); { T = getchar(); if (T == || T == \t) ; else if (T == \n) NumLigne ++; else if(isdigit(T)) { Vallex = T-0; T = getchar(); While (isdigit(T)) { ValLex = ValLex*10+T-0; T = getchar(); } ungetc(T, stdin); return NB; } Else ValLex = RIEN; Return T; } } Unilex AnalLex() /* Unilex est une chaine si Anallex retourne uniquement lunité lexicale*/ { /* Unilex est un entier si AnalLex retourne lunité lexicale et chaque unité est définie comme une constante*/ /* Unilex est un enregistrement si Analex retourne lunité lexicale et un attribut*/ { Switch(etat) { case 0: Init(Chaine); car = carsuivant(); if(car == || car == \t || car = \n) { etat = 0; debutlex ++; } else if( car == <) etat = 5; else if (car == =) etat = 9; else if (car == >) etat = 10; else if (isletter(car)) Ajouter(car, chaine); etat = 1; else if(isdigit(car)) Ajouter(car, chaine); etat = 3; else if(car == EOF) etat = 13; else Erreur(); case 1: car = carsuiv(); if(isletter(car) || isdigit(car)) ajouter(car, chaine);; else etat = 2; break; case 2: Reculer(1); RangerId(); return(UniLexId()); /* cas où lanalyseur lexical retourne uniquement */lunité lexicale sinon, il faut utiliser un enregistrement (symbole)*/ . case 3: car = carsuiv(); if(isdigit(car)) ajouter(car, chaine); else etat = 4; break; case 4 : Reculer(1); Return(NB); case 6: Return(Oprel); case 13: Return(EOF); } Unilex AnalLex() /* Unilex est une chaine si AnalLex retourne uniquement lunité lexicale*/ { /* Unilex est un entier si AnalLex retourne lunité lexicale et chaque unité est définie comme une constante*/ /* Unilex est un enregistrement si AnalLex retourne lunité lexicale et un attribut*/ { Switch(etat) { case 0: Init(Chaine)car = carsuivant(); if(car == || car == \t || car = \n) { etat = 0; debutlex ++; } else if( car == <) etat = 5; else if (car == =) etat = 9; else if (car == >) etat = 10; else if (isletter(car)) etat = 1; else if(isdigit(car)) etat = 3; else if(car == EOF) etat = 13; else Erreur(); case 1: car = carsuiv(); if(isletter(car) || isdigit(car)) ajouter(car, chaine);; else etat = 2; break; case 2: Reculer(1); symbole.att = RangerId(); symbole.UL = UniLexId(); Return(Symbole); . case 3: car = carsuiv(); if(isdigit(car)) ajouter(car, chaine); else etat = 4; break; case 4 : Reculer(1); symbole.UL=NB; symbole.Att = toupper(chaine)); Return(symbole); case 6: symbole.UL = Oprel; symbole.att = PPE; Return(symbole); case 13: symbole.UL = EOF; symbole.att = 0; Return(symbole);} /* On peut retourner des numériques.
Dis nous directement ce qui te bloque ça sera beaucoup plus rapide.
je souhaite savoir c'est juste se que j'ai fais ou non
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager