begin process at 2012 05 28 07:30:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

analyseur lexical pascal


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

analyseur lexical pascal

samedi 9 mai 2009 à 19:25:00 | analyseur lexical pascal

perrotta

Bonjour,
dsl pour ma langue je parle pas bien le français;
je suis entrin de devlopper un analyseur lexical pour un programme (pascal) prèci ,et j'ai des pbs,dans mon prog
j'ouvre le texte a analyser a partir d'un fichier et le texte source je le met dans un notre fichier.le pb c que a l'execution j'ai un texte vide.
.voila mon code:
************************************************************­*********

#include<stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
char c;
char buffer[100];
char *motcle[]={"program","var","integer","real","boolean","begin","true","while","writeln","readln",
"if","then","end","else","false"};
char *separa[]={";",":",",",":=","'","/","(",")","<>",">","+","-","."};
char *ident[100];
int k,i,p,nident=0;
//:declaration de struct*********************
struct Ttoken{
int type;
int pos;
int li;
int col;
} token;
//******************************************
// la foncton qui che *************************
int trouv(char *t[],char *s,int n)
{
int j,pos=-1;
for(j=0;j<n;j++)
{if(strcmp(t[j],s)==0)
pos= j;
}
return pos;
}//********************************************

int main(void)
{
FILE *f,*fs;
int etat = 0;
int ib=0;
f=fopen("tp1.pas","r");
fs=fopen("tp10.txt","w");

while(fread(&c,sizeof(char),1,f))
{

if (c!='\r')
{
switch(etat)
{case 0:
{
if (isalpha(c))
{
etat = 1;
i=0;
buffer[i]=c;
i++;
ib++;
continue;
}
}
case 1:
{
if (isalnum(c)) {
buffer[i]=buffer[i]+c;
i++;
ib++;

} else {
p=trouv(motcle,buffer,13);
if(p!=-1){
token.type=1;
token.pos=p;
token.li=0;
token.col=0;
fwrite(&token,sizeof(token),1,fs);
}
else
{
p=trouv(ident,buffer,nident);
if(p!=-1){
token.type=2;
token.pos=p;
token.li;
token.col;
fwrite(&token,sizeof(token),1,fs);
}
else
{
ident[nident]=malloc(sizeof(buffer[i]));
strcpy(ident[nident],buffer);
buffer[i]='\0';
token.type=2;
token.pos=p;
token.li;
token.col;
fwrite(&token,sizeof(token),1,fs);
nident=nident+1;
}}
}
etat = 0;
ungetc(c,f);
}
token.col++;


}}
else token.li++;
}
fclose(f);
fclose(fs);
}
***********************merci d'avance**************************


Cette discussion est classée dans : buffer, int, char, token, if


Répondre à ce message

Sujets en rapport avec ce message

taille chaine de char [ par langedechu ] Salut , voila mon prob (je sais plus comment faire) :j'ai une variable : const char *buffer; et j aimerais savoir le nombre de caractere stocker dans Comment forcer le RTS pour une liaison RS232 [ par ancat ] Bonjourje viens de faire un petit prog (grandement inspire de sources du site) mais je ne saisis pas trop le controle du RTS.Celui ci est-il traite pa [ C ] copier ds un tableau apres un read? [ par lcstriker ] bonjour!!!g un leger probleme, que je suis sur vous serai nombreux a pouvoir resoudre:#include #define BUFF_SIZE 42int main(int ac, char **av){ Création d'un client [ par tomalille ] Bonjour,je viens d'écrire ce code qui cré un client qui se connecte sur un serveur apache. A la compilation (sous visual C++) j'ai 5 erreurs, je ne co strcat : fonction( char* buffer, int nb ); [ par wizard512 ] Bonsoir,Je souhaiterais savoir Si une fonction similaire a strcat() existerais,mais qui ajoute un entier ( int ) dans une erreur bizzare [ par lektrosonic ] Bonjour, je code un programe en C sous Visual Studio.La chose qui est tres surprenante c est que quand je lance mon programe a partir de windows, il p char* dans un destructeur [ par pepsidrinker ] Premierement, merci de lire ce post, et merci a tous ceux qui veulent maider. Jai le probleme suivant: Jassigne des char* avec 'new[]' dans le constru Suppression de caractères d'un gros fichier texte [ par mslider ] --Bonjour, c'est juste pour une petite aide. J'ai utilisé un code qui avait été mis au point à l'origine pour faire du cross-table(tableau croisé, vo probleme avec une chaine de caractere [ par joben22 ] Bonsoir, j'ai un petit soucis avec une fonction que j'essaie de coder. En fait, je lis le contenue d'un fichier, le place dans un char* et la j'aimer Probleme de Malloc sur un char ** [ par tomy46 ] Bonjour a tous, Avant tout, désole pour les accents (sauf ceux repris par la correction orthographique) mais je suis sur qwerty ... Bon voici mon pr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,902 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales