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

Pascal Discussion :

Programme analyseur lexical


Sujet :

Pascal

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Programme analyseur lexical
    je cherche un simple programme d'un analyseur lexical dont aprés le texte entrant le resultat sera:
    mot clés:begin, end, ...
    ponctuation: ; , : ,. ,(......
    identificateur: i, j...
    opérateurs: < > := ..
    s'il vous plait qui peut m'aider
    et merci

  2. #2
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Salut

    Pourrais-tu être plus explicite ?
    Que doit faire le programme exactement ?
    Pour quel usage ?
    Etc.

    Cordialement
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut programme analyseur lexical
    bon pour etre plus claire je donne un exemple: l'utilisateur entre cette fonction
    function max (i,j) :integer ;
    et le programme va afficher comme resultat les unité lexical:
    mot clé: function
    identificateur: i j
    ponctuation , ( )
    operateur par exp + - ..
    et merci .

  4. #4
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Bof, c'est un exercice banal, ça.
    Qu'as-tu écrit (code, pseudo-code, organigramme...) ?
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut programme analyseur lexical
    voila le code :
    function max (i,j:integer) : integer;
    begin
    if i>j then max:= i else maw:= j
    end;
    je cherche un programme qui identifier les unités lexical et leurs types svp.
    et merci

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    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 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut
    le premier conseille serait de l'analyser manuellement et de noter le processus que tu utilise pour y parvenir
    je m'explique reprenons ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function max (i,j:integer) : integer;
    begin
    if i>j then max:= i else maw:= j
    end;
    comme tu l'as compris dans d'autre post que tu as émis, tu doit découper ton texte en mot
    ce qui dans ton cas donnera
    function
    max
    (
    i
    ,
    j
    :
    integer
    )
    : integer on passe ces deux termes car on les a déjà défini avant
    ;
    begin
    if
    i
    >
    j
    then
    max
    :=
    i
    else
    max:= j
    end
    ;


    une fois que tu as fais cela
    il te reste donc

    function
    max
    (
    i
    ,
    j
    :
    integer
    )
    ;
    begin
    if
    >
    then
    :=
    else
    end


    voila donc ta liste de mots disponible pour cette fonction .

    maintenant comment ton cerveau sais à quoi correspond tel ou tel terme ?
    je pense que comme moi tu l'as appris soit par des livres, soit par des cours, soit autrement

    il te faut donc rapprocher ces termes avec des listes de lexème prédéfini
    d’après ce que tu as dis, il te faut :
    une liste de mot clé
    une liste d’opérateur
    une liste de type ordinal ou complexe
    une fois que tu as défini ces listes, il ne te reste plus qu'a comparer tes mots avec les lexèmes prédéfini dans les listes
    voila une première explication succin, mais qui te permettra d'avancer un peu dans ton projet
    une fois que tu auras fais ça on pourra approfondir et affiner le raisonnement pour analyser la fonction dans son ensemble
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut programme analyseur lexical
    merci beaucoup , mais esque tu peux m'aider pour faire la fonction qui permet de suprimer le vide et sauter la ligne SVP
    et merci d'avance

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    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 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    oui je peut t'aider ... les autres aussi

    bon alors comment faire pour lire un texte ?
    je suppose que tu as déjà une petite idée ?

    tout est dans les boucles

    la première chose à trouver c'est la longueur de la chaine
    voici un code basique pour parcourir un texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     LgChaine := length(MonTexte);
     iPosCurrent := 1;
     while (iPosCurrent <=LgChaine do
     begin
          ...
          inc(iPosCurrent);
      end;
    une fois cette boucle principale compris il te faut faire différent test
    on va se construire quelque fonction utile

    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
     
    ///////////////////////////////////////////////////////////////////////////////
    function IsDigit:Boolean;
    begin
     Result := (iPosCurrent<=LgChaine) and (MonTexte[iPosCurrent] in ['0'..'9']) ;
    end;
    ///////////////////////////////////////////////////////////////////////////////
    function IsAlpha:boolean;
    begin
      Result:=(iPosCurrent<=LgChaine) and (UpCase(MonTexte[iPosCurrent]) in ['A'..'Z','_']);
    end;
    ///////////////////////////////////////////////////////////////////////////////
    function IsOperateur : boolean;
    begin
      Result:=(iPosCurrent<=LgChaine) and (MonTexte[iPosCurrent] in ['(',';',':','=',')']);
    end;
    ///////////////////////////////////////////////////////////////////////////////
    function ExtractMot : String;
    begin
      Result:=copy(Line,iPosStart,IPosEnd);
    end;
    ///////////////////////////////////////////////////////////////////////////////
    function GetDigit : string;
    var
      i:integer;
    begin
      IPosStart :=iPosCurrent;
      while IsDigit do
         inc(iPosCurrent);
      IPosEnd :=iPosCurrent -1;  
      Result :=ExtractMot;
    end;
    ///////////////////////////////////////////////////////////////////////////////
    function GetAlpha : string;
    var
      i:integer;
    begin
      IPosStart :=iPosCurrent;
      while IsAlpha do
         inc(iPosCurrent);
      IPosEnd :=iPosCurrent -1;  
      Result :=ExtractMot;
    end;
    ///////////////////////////////////////////////////////////////////////////////
    voila c'est tout pour ce soir ... essai de voir comment tu organiserais le code pour pouvoir en extraire une liste de mots
    et construit d'autre fonction si besoin est
    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

  9. #9
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Juste un détail, pour tester si un caractère est une "lettre" (donc faisant partie soit d'un identifiant, soit d'une chaîne de caractères), je mettrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... in ['A'..'Z','_','a'..'z']
    car les minuscules en font partie.
    Mais je suppose que tout le monde avait rectifié !
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    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 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    effectivement c'est un choix ... mais si tu avais bien examiné mon code je test avec un upcase() ce qui a pour effet de mettre en majuscule le caractère testé
    c'est donc pour cela que j'avais délibérément réduit ma liste de caractère mais effectivement rien ne t’empêche d’agrandir la liste.
    Dans ce cas là le contrôle sera écrit de cet façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ///////////////////////////////////////////////////////////////////////////////
    function IsAlpha:boolean;
    begin
      Result:=(iPosCurrent<=LgChaine) and (MonTexte[iPosCurrent] in ['A'..'Z','_','a'..'z']);
    end;
    voila pour la rectification
    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

  11. #11
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Bon, décidément, il est temps que je prenne ma retraite, moi !
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    merci j'essaye d'avancer dans mon travail

  13. #13
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    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 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut,

    bon maintenant que tu as avancé ...
    tu vas pouvoir nous montrer ton code et à partir de là tu vas pouvoir faire évoluer ton programme
    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

Discussions similaires

  1. Programmation analyseur trames
    Par tonycalv dans le forum Développement
    Réponses: 1
    Dernier message: 09/05/2007, 18h29
  2. Faire un analyseur lexical
    Par sylsau dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 29/03/2007, 12h41
  3. Analyseur lexical a 3 automates
    Par mehdouch dans le forum C
    Réponses: 2
    Dernier message: 29/03/2006, 11h00

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