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

Turbo Pascal Discussion :

Compilateur lexical Pascal : problème avec les mots-clés et le if then


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Compilateur lexical Pascal : problème avec les mots-clés et le if then
    Bonjour,
    J'ai besoin d'aide SVP, avec un compilateur lexical Pascal. J'ai un problème avec les mots-clés et le if in then
    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
    program analyseur;
    uses crt;
    var
     ligne, mot : string;
     i, j, cpt_chaines, cpt_operateurs, cpt_ponctuations,cpt_motcle,cpt_chaineslittereaux : integer;
     chaines, operateurs, ponctuations,motcle,chaineslittereaux : array [1 .. 100] of string;
     
    begin
     WriteLn('Veuillez entrer une ligne de code à analyser :');
     ReadLn(ligne);
     i := 1;
     cpt_chaines := 0;
     cpt_operateurs := 0;
     cpt_ponctuations := 0;
     while TRUE do
      begin
       while ligne[i] = ' ' do
        Inc(i);
       j := i;
       while ligne[j] in ['a' .. 'z', 'A' .. 'Z', '0' .. '9'] do
        Inc(j);
       mot := Copy(ligne, i, j - i);
       if mot <> '' then
        begin
         Inc(cpt_chaines);
         chaines[cpt_chaines] := mot;
        end;
     
    if (chaines[i]='begin')or(chaines[i]='end')or(chaines[i]='if')or(chaines[i]='else')or(chaines[i]='while')or(chaines[i]='intger')or
        (chaines[i]='real')or(chaines[i]='string')or(chaines[i]='char')or(chaines[i]='for')or(chaines[i]='do')or(chaines[i]='function')or
       (chaines[i]='var')or(chaines[i]='procedure')then
     
    	begin
    	Inc(cpt_motcle);
    	motcle[cpt_motcle]:= chaines[i]
    	end
     
    	else if (chaine[i] in ['0'..'9']
    	Inc(cpt_chaineslittereaux);
    	chaineslittereaux[cpt_chaineslittereaux]:=chianes[i]
    	end
     
      if ligne[j] = ':' then
        begin
    	 if (j + 1 <= Length(ligne)) and (ligne[j + 1] = '=') then
    	  begin
    	   Inc(j);
    	   Inc(cpt_operateurs);
    	   operateurs[cpt_operateurs] := ':='
    	  end
    	 else
    	  begin
    	   Inc(cpt_ponctuations);
    	   ponctuations[cpt_ponctuations] := ':'
    	  end
        end
       else if (ligne[j] = ',') or (ligne[j] = ';') or (ligne[j] = '(') or (ligne[j] = ')') then
    	begin
    	 Inc(cpt_ponctuations);
    	 ponctuations[cpt_ponctuations] := ligne[j]
    	end
       else if (ligne[j] = '+') or (ligne[j] = '-') or (ligne[j] = '*') or (ligne[j] = '/') then
    	begin
    	 Inc(cpt_operateurs);
    	 operateurs[cpt_operateurs] := ligne[j]
    	end;
       i := j + 1;
       if i > Length(ligne) then
        break
      end;
     WriteLn('--------------------------------------------------------------------------------');
     WriteLn('Chaînes littérale ou identificateur (', cpt_chaines, ') :');
     for i := 1 to cpt_chaines do
      WriteLn(i, ') : ', chaines[i]);
     
    WriteLn('les mots clés (', cpt_motcle, ') :');
     for i := 1 to cpt_motcle do
      WriteLn(i, ') : ', motcle[i]);
     
      WriteLn('Opérateurs (', cpt_operateurs, ') :');
     for i := 1 to cpt_operateurs do
      WriteLn(i, ') : ', operateurs[i]);
     
     
      WriteLn('Ponctuations (', cpt_ponctuations, ') :');
     for i := 1 to cpt_ponctuations do
      WriteLn(i, ') : ', ponctuations[i]);
     ReadLn
    end.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Il y a déjà un problème de variables déclarées : La mémoire utilisée par les variables dépasse la limite(64 Ko) permise que ce soit en Local ou en Global, d'où un message "Too many variables".
    Essaie de diviser ton programme en modules(Fonctions et procédures) pour palier à ce problème.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Problème avec les mots-clés
    Par maitoti dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 25/03/2011, 23h06
  2. URL rewriting (problème avec les mots-clés)
    Par Creanet dans le forum Apache
    Réponses: 2
    Dernier message: 23/11/2009, 19h53
  3. agscloud avec les mots clés les plus recherchés
    Par kadiato dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/02/2009, 18h14
  4. [IB5.3->FB2] problème avec des mots clés
    Par SergioMaster dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/04/2007, 16h59

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