IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Aide pour un analyseur syntaxique


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Aide pour un analyseur syntaxique
    j'ai besoin d'un analyseur lexical en delphi ; voici mon code source:
    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;

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    qui dit analyseur lexicale dit lexique afin de pouvoir verifier que le mots trouvé se trouve dans le dictionnaire(lexique) connue
    il faut que tu nous en dise plus pour que l'on puisse serieusement t'aider
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    c'est vieux, même très vieux mais ça reste une bonne base

    http://compilers.iecc.com/crenshaw/
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    bon un analyseur lexicale qui detecte a partir d'une fonction mot clès ( function, integer...) operateurs (+,/) identificateurs ( i,j....) symbole de ponctuation (,;

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    regarde sur le site de j colibri ancien rédacteur de l'excellentissime revu pascaliscime maintenant disparu
    www.jcolibri.com
    cela te donnera une idée de comment faire ce que tu recherche
    sinon il existe aussi des interpréteur tout fait plus ou moins performant plus ou moins fiable
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    merci beaucoup mais je cherche un simple analyseur lexical en delphi

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par bellamina Voir le message
    merciiiiii beaucoup mais je cherche un simple analyseur lexical en delphi
    j'ai plus l'impression qu'il s'agit d'un compteur de mots, du moins à la lecture du code proposé.

    Ceci étant, avec quelle version de Delphi : Unicode ou pas ? cela risque d'avoir son importance
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Pour être plus claire mon code est incomplet je vous montre un exemple : l'utilisateur écrit une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function max (i, j: integer): integer;
    Le résultat sera :

    Mots-clés : function integer
    Opérateurs : +
    Identificateurs : max i j
    Ponctuation : ( : ) ;

    Et merci.

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    sachant que l'ordinateur n'est pas un devin c'est donc à toi de lui indiquer dans quelle catégorie les éléments trouvés sont à ranger

    d’après ce que tu écris il existerait 4 catégories
    donc imaginons que tu veuille les distinguer lors de la lecture
    Pour cela il va nous falloir certaines informations pour définir à quel type ils appartiennent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const
     AR_MOTSRESERVE : array[0..1] of String= ('function','integer');
     AR_OPERATEUR     : array[0..3] of String=('+','-','*','/');
     AR_PONCTUATION :  array[0..3] of String=('(',':',';');
    tu remarques que je ne crée pas de tableau pour les identificateurs... je suppose que ceux-ci peuvent être variables et par définition qu'ils n’appartiennent à aucune autre catégorie c'est donc qu'ils sont forcement des identificateurs

    il ne te reste plus qu'à lire ton source et comparer les mots et ou caractères trouvés aux différents tableaux créés
    et selon certaines règles que tu auras définies il te sera possible de les catégoriser
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    bon pour etre plus clair je voulais realiser un mini analyseur lexicale en delphi5 j'ai creè 3 memo le 1er contien la fonction a analysè et le 2eme le reslutat a afficher (des mots clès) le 3eme resultats a afficher (des symboles) et un bouton pour lancer l analyse aidez moi a commencer
    par exemple on saisie dans memo1

    function max(i,j:integrer):integer; begin

    if<j then max:=i else max:=j end
    dans memo 2 affiche:mots clès function integer begin end if else then
    memo3 affiche : ; , ( )

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    on a très bien compris l'exercice (je parle sciemment d'exercice, car on a deviné qu'il s'agissait d'un exercice d'étudiant, deux demandes identiques par 2 personnes différentes cela met la puce à l'oreille) . Le seul fait nouveau de ce post : on connait enfin la version de Delphi !

    Bref anapurna vous a indiqué les pistes à suivre , reste plus qu'a nous montrer du code .

    mon conseil :
    1. commencer par la ponctuation et les opérateurs , là il s'agit de faire une recherche d'existence dans le texte des éléments dans AR_PONCTUATION et AR_OPERATEUR (pour reprendre le "lexique" ,incomplet , d'anapurna) par l'utilisation de pos par exemple.
    2. remplacer ensuite la ponctuation, les opérateurs par un caractère spécifique (un espace par exemple) >> utilisation de StringReplace
    3. utiliser un TStringList pour découper la/les lignes (utilisation de StringList.Commatext ) << si vous avez déjà vu ça en cours il est évident que l'exercice demandé par votre prof est fait pour apprendre cette fonctionnalité
    4. Faire ensuite une recherche dans la TStringList des éléments de AR_MOTSRESERVE (StringList.IndexOf).


    [Edit] au moment où j'écrivais mes conseils je n'avais pas de Delphi <7 sous la main . Après une longue mise à jour windows qui a bloqué mon poste de dev. ayant toujours un D3 (désolé D5 n'y est plus) je confirme que la réalisation est possible en D3 et donc par déduction en D5


    AMHA et selon ma vieille expérience d'ancien prof, vous avez vu en cours TStringList, votre prof ne veut pas vous planter mais simplement vous faire comprendre cette notion, en tout cas , c'est ce que moi j'aurais fait !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    merciiiiiii mais on a pas vu tsringlist on cour pouvez vous m expliquez le principe stp

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    L'aide de Delphi vous en donnera tous les principes . En gros un TstringList est un composant non visuel qui permet de stocker dans un tableau des chaines de caractères (memo1.lines par exemple est un TStringList) , TStingList est dérivée de TStrings (si vous n'avez pas vu TStringlist vous avez obligatoirement vu cette dernière (en fait dans mon post j'ai longtemps hésité sur le choix)
    Citation Envoyé par Aide Delphi
    TStringList gère une liste de chaînes.
    TStringList implémente les propriétés abstraites et les méthodes introduites dans TStrings et y ajoute de nouvelles propriétés, événements et méthodes pour*:

    Trier les chaînes de la liste,
    Interdire les chaînes en double dans les listes triées,
    Répondre aux changements du contenu de la liste.
    Déterminer si la casse est prise en compte quand les chaînes sont localisées, triées et identifiées comme des chaînes dupliquées.
    toujours avec vous apprendrez à
    1 Construire l'objet liste de chaînes.
    2 Dans la partie try d'un bloc try...finally, utilisez la liste de chaînes.
    3 Dans la partie finally, libérez l'objet liste de chaînes.

    Le gestionnaire d'événement suivant répond au choix d'un bouton en construisant un objet liste de chaînes, en l'utilisant puis en le détruisant*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    var  TempList: TStrings;  { déclarer la liste }
    begin
      TempList := TStringList.Create;  { construire l'objet liste }
      try   { utiliser la liste de chaînes }
      finally    TempList.Free;  { détruire l'objet liste }
      end;
    end
    ;
    maintenant à vous de jouer, vous avez tous les éléments
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Nom : 10921966_830307213695891_346741487_n.jpg
Affichages : 309
Taille : 87,9 Ko je cherche au debut d afficher dans chaque ligne un mot tu peux m aidez stp

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Citation Envoyé par bellamina
    je cherche au debut d afficher dans chaque ligne un mot tu peux m aidez stp
    Que celui qui comprenne me traduise cette demande !

    Plus sérieusement, vous avez tous les éléments en main pour faire ce que vous avez demandé et
    Cri d'exaspération>>IL EST HORS DE QUESTION QUE L'ON FASSE L'EXERCICE A VOTRE PLACE << Cri d'exaspération
    C'est la dernière fois que je vous renvoi aux règles du forum en particulier celle-ci

    vous vous moquez de nous ? envoyer une photo d'un écran (et encore peut être même pas le votre !) ce n'est pas digne de l'esprit du forum !

    Faites des efforts ! mon dernier post et le point 3 de celui-ci vous permettent de faire l'exercice 3
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    merci,
    j'ai commencé par la recherche des ponctuations et symboles en utilisant Pos mais il y a une erreur opérateur de type array et aussi je n'arrive pas a faire copy(position,....,...) vers un label voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button2Click(Sender: TObject);
    var
    Position:integer;
    chaine,mot:string;
    begin
    position:=pos (strtoint(operateur,Memo1.Lines.Text ));
    if position > 0 then showmessage('trouve');
     
    end;

  17. #17
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 854
    Points : 11 287
    Points
    11 287
    Billets dans le blog
    6
    Par défaut
    Il en va du code comme de chaque langue : pour qu'il soit aisément compréhensible, les mots doivent être parlants et refléter une réalité ou leur fonction.

    Dans votre code, la variable "position" porte bien son nom. Mais de quelle position s'agit-il ? La fonction Pos() cherche effectivement la position d'une sous-chaîne dans une chaîne. ici, on ne distingue pas bien sur quoi on l'applique ! Que vient faire là le StrToInt ? Et "operateur" ?

    Outre qu'il est manifestement faux, ce code n'est pas suffisamment clair par rapport à ce que vous attendez qu'il fasse : ça devrait se lire plus aisément s'il était bien conçu (surtout si les noms de variables sont bien choisis), presque comme du langage naturel plus que comme un jargon abscons.

    Bref, clarifiez vos idées puis le code, en repartant de choses simples, étape par étape (ça s'appelle aussi un algorithme) : vous vous rendrez service. Donc posez-vous les bonnes questions : que faut-il faire, quels sont les outils pour le faire (relire les pistes proposées), et essayez de les appliquer de façon progressive. Bon code !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  18. #18
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    ouf, c'est fatiguant j'arrive à afficher chaque mot dans une ligne et je veux bien parcourir memo2 pour trouver les mots clés, identificateurs et symboles
    et ponctuation aidez moi svp en utilisant templist parce que je n'arrive pas à le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button3Click(Sender: TObject);
    var
      sl: TStringList;
    begin
      sl:= TStringList.Create;
      sl.CommaText:= memo1.text;
      Memo2.Lines.Assign(sl);
      sl.Free;
     
    end;

  19. #19
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 119
    Points
    3 119
    Par défaut
    Bonjour,
    ça à l'air mal parti ! ce qui complique c'est qu'il peut y avoir plusieurs espaces entre chaque mot.

    on peut par exemple :

    - lire la phrase à traiter et la stocker par exemple dans une chaine :
    - parcourir la phrase caractère par caractère dans un While du début à la fin et dans ce while :
    - mettre le mot à trouver à blanc ;
    - sauter les caractères "espaces" dans un while
    - récupérer le mot dans un autre while
    - si le mot n'est pas vide : le stocker dans le 2iéme mémo par exemple

    Essaye de faire cela

    A+
    Charly

  20. #20
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    @Charly910 la démarche que tu indiques en exemple est déjà faite via commatext, autant utiliser les fonctions internes à Delphi non ?
    Citation Envoyé par Charly910 Voir le message
    ce qui complique c'est qu'il peut y avoir plusieurs espaces entre chaque mot.
    en fait non, c'est tout l'intérêt de commatext qui supprime les espaces (mais aussi les ',')
    c'est pour cela que j'ai indiqué les phases suivantes
    Citation Envoyé par SergioMaster
    commencer par la ponctuation et les opérateurs... puis remplacer ensuite la ponctuation, les opérateurs par un caractère spécifique (un espace par exemple)
    L'intérêt supplémentaire de TStringList par rapport a TStrings est de pourvoir en faire une liste triée (propriété Sorted à true) et sans doublons(propriété Duplicates contenant dupIgnore) .(Impliquant ainsi une recherche plus rapide et des résultats uniques)

    ouf, c'est fatiguant
    ce n'est qu'un gymnastique de l'esprit . A ce propos si vous n'utilisez ni le tri ni le dédoublonnage de la stringlist, vous êtes vous aperçu que Memo.lines est un TStrings et donc que tout votre code peut s'écrire en une seule ligne << je sens que ça vous allez dire que c'est "très fatiguant"

    j'arrive à afficher chaque mot dans une ligne et je veux bien parcourir memo2 pour trouver les mots clés, identificateurs
    mais pourquoi parcourir memo2 (et donc par un composant visuel)alors que l'on peut passer directement par la stringlist ?

    symboles et ponctuation
    je vous ai déjà signalé qu'il fallait en faire la recherche et les remplacer en Priorité
    une phrase telle que "a+b" donnera le mot "a+b" alors que si '+' est cherché d'abord puis remplacé par ' ' alors le traitement par commatext donnera 'a' et 'b'
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Analyseur syntaxique pour Java
    Par yucef83 dans le forum Général Java
    Réponses: 5
    Dernier message: 01/02/2014, 01h44
  2. Grammaire pour un analyseur syntaxique
    Par goldray dans le forum Débuter
    Réponses: 1
    Dernier message: 23/04/2013, 01h53
  3. aide pour créer un analyseur
    Par safy05 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/10/2010, 21h02
  4. Aide pour déboguer un analyseur lexical
    Par dillinger91 dans le forum Caml
    Réponses: 7
    Dernier message: 07/02/2010, 23h45
  5. Programmer un analyseur syntaxique pour une grammaire donnée
    Par mohamed seddik dans le forum Débuter
    Réponses: 10
    Dernier message: 25/01/2009, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo