Bonsoir à tous, je cherche un programme simple d'un analyseur lexical en langage Delphi. C'est simple je pense mais mon problème c'est que je maîtrise pas le Delphi.
Bonsoir à tous, je cherche un programme simple d'un analyseur lexical en langage Delphi. C'est simple je pense mais mon problème c'est que je maîtrise pas le Delphi.
Vous êtes dans la même classe ?
aidez-moi svp si vous avez quelque chose sur l'analyseur lexical
oui biensur ta raison voila mon travaille :
maintenant je veux savoir comment classer les unité lexical dont le resultat sera :
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 procedure TForm1.Button1Click(Sender: TObject); var p,f,i:integer; mot,str:string; begin str:= edit1.text; i:=1; while i<= length(str) do begin while (i <= length(str)) and (str[i]=' ') do i:=i+1; p:=i; while (i<=length(str)) and ((str[i]<>' ')) do i:=i+1; f:=i-1; mot:=copy(str,p,f-p+1); memo1.lines.add(mot); end;
Mots-clés : function integer
Opérateurs : +
Identificateurs : max i j
Ponctuation : ( : ) ;
Et merci.
Bonjour,
une fois les différents mots ou opérateurs stockés dans des chaines, il faut faire un Case pour les ranger dans les différentes catégories (si c'est bien cela la question ?).
Comme le Case sur des Strings n'existe pas en Pascal, il faut utiliser la fonction AnsiIndexStr de l'unité StrUtils qui renvoie la position d'une chaine dans un tableau de chaines :
ou mieux, avec la fonction AnsiMatchStr on peut tester si c'est un opérateur, puis une fonction, puis un séparateur, ... Il faudra ensuite traiter les nombres et les variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 uses StrUtils; ... Case AnsiIndexStr(UpperCase(Mot), ['+', '*', 'FUNCTION', ...]) of 0 : // Mot à ranger dans les opérateurs 1 : // Mot à ranger dans les opérateurs 2 : // Mot à ranger dans les mots clefs -1 : // Mot inconnu end;
A+
Charly
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