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 :

Analyseur lexical et syntaxique sur Pascal


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Par défaut Analyseur lexical et syntaxique sur Pascal
    Salut
    Je suis en train d'écrire un algorithme d'analyseur lexical et syntaxique sur Pascal.
    S'il y a quelqu'un pour m'aider

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 055
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue,

    Peux-tu décrire les problèmes que tu rencontres ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Par défaut
    Salut voici mon travail pour analyse lexicale :
    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
    103
    104
    105
    106
    program tp;
    uses crt;
    {type
       lettres  = array ['A'..'Z'];
       digits   = array['0'..'Z'];
       speciaux = array ['+','-']
        end;}
    type genres = (alfanum, constante, oporateur) ;
            sortes = (lettre, digit, special, blanc, autre) ;
            codes = (identificateur, plus, moins, debut, fin, etc) ;
            channes = record case genre : genres of
                                         alfanum : (code : codes ; mot : char) ;
                                         constante : (nb : integer) ;
                                         oporateur : (codop : codes)
                             end ;
    var car : array [1.. 255] of char ;
          derniercar : char ; icar : 1 .. 255 ; sorte : sortes ;
          lettres, digits, speciaux : set of char ;
          entree : text ;
     
    {procédures auxiliaires utilisées par lexico}
     
     
    procedure cherchereserve (mot : char ; var code : codes) ;
    begin  {fournit le code du mot réservé} end ;
     
    function cod (c : char) : codes ;
    begin  {fournit le code de l'opérateur} end ;
     
    procedure erreur (k : integer) ;
    begin  {imprime un message d'erreur} end ;
     
    procedure lire (var sorte : sortes) ;
    var ch : char ;
    begin {lire}
    icar := icar + 1 ;
    read (entree,ch) ;
    car [icar] := ch ;
    if ch in lettres then sorte := lettre else
    if ch in digits then sorte := digit else
    if ch in speciaux then sorte := special else
    if ch = ' ' then sorte := blanc else sorte := autre
    end {lire};
     
    procedure compacter (var element : channes) ;
    var i : 1 .. 255 ;
    begin {compacter}
    with element do
        case genre of
                alfanum: begin {pack (car,1,mot) ;}
                                          code := identificateur ;
                                          cherchereserve (mot,code)
                                end ;
     
               constante : begin nb := 0 ;
                                            for i := 1 to icar-1 do
                                                 nb :=nb*10+ord(car [i])-ord('0');
                                  end ;
               oporateur : codop := cod(car[1])
        end {case}
    end ; {compacter}
     
    procedure lexico (var element : channes) ;
    var             sorte2 :sortes ; i : 1 .. 255 ; cr : char ;
    begin
    for i := 1 to 255 do car[i] := ' ' ;
    if derniercar = ' ' then
                                begin
                                    icar := 1;
                                    lire (sorte);
                                        end
                                else begin car[1] := derniercar ;
                                                  icar := 1
                                        end;
     
     
    case sorte of
     
    lettre : begin lire (sorte2) ;
                         while (sorte2 = lettre) or (sorte2 = digit) do
                              lire (sorte2); cr:=car[icar]; car[icar]:=' ';
                         element.genre := alfanum ;
                         compacter (element) ; car[icar]:= cr
               end;
     
    digit : begin lire (sorte2) ;
                        while sorte2 = digit do lire (sorte2) ;
                        element.genre := constante;
                        compacter (element)
    end ;
     
    blanc : begin lire (sorte2) ;
                          while sorte2 = blanc do lire (sorte2)
                end ;
     
    special : begin element.genre := oporateur ;
                            compacter (element) ; sorte2 := blanc
                  end ;
     
    autre : erreur(1);
     
    end {case sorte} ;
     
              derniercar := car [icar] ; sorte := sorte2;
     
    end ; {lexico}
    Mon problème c'est ce que je dois faire pour le programme que je dois analyser
    et quoi pour les messages d'erreurs...

Discussions similaires

  1. Analyseur lexical et syntaxique
    Par kimikimi dans le forum C
    Réponses: 2
    Dernier message: 06/04/2011, 21h31
  2. Analyseur lexical et syntaxique pour Caml
    Par ali-dev85 dans le forum Caml
    Réponses: 3
    Dernier message: 31/01/2009, 13h39
  3. Analyseur lexical et syntaxique
    Par soujava dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 02/04/2008, 15h40
  4. Analyseur lexical en Pascal
    Par acacia dans le forum Langage
    Réponses: 5
    Dernier message: 29/11/2007, 15h43

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