nike 10 Posted January 30, 2009 Partager Posted January 30, 2009 j'ai programmé un analyseur lexiacal pour une requette en sql,et je vx au plus vite possible son analyseur syntaxique ,le programme d'un analyseur lexical que j'ai fais est le suivant: #include #include #include #include typedef struct { char *type; int ind; ** unite; unite resultat[50]; int nbid,nblex,k; char *id[50]; char *key[10]; char sep[5]; char *lex,*req; int test(char u) { if((u>='a')&&(u<='z')) return 1; if((u>='0')&&(u<='9')) return 2; if((u==',')||(u==';')||(u=='(')||(u==')')) return 3; if((u==' ')) return 4; ** int iskey(char *u) { int i; for(i=0;i<3;i++) if(strcmp(u,key)==0) return i; return -1; ** char *add(char *s1,char c) { char *s=(char *)malloc(10* sizeof(char)); sprintf(s,"%s%c",s1,c); return s; ** int isid(char *u) { int i; for(i=0;i if(strcmp(u,id)==0) return i; return -1; ** int issep(char u) { int i; for(i=0;i<3;i++) if(u==sep) return i; return -1; ** void main() { clrscr(); key[0]="create"; key[1]="table"; key[2]="select"; sep[0]='('; sep[1]=')'; sep[2]=','; gets(req); k=0; nbid=0; nblex=0; while(k { switch(test(req[k])) { case 1:lex=""; while((test(req[k])==1)||(test(req[k])==2)) {lex=add(lex,req[k]);k++;** k--; printf("%s \n",lex); if(iskey(lex)>=0) { resultat[nblex].type="key"; resultat[nblex].ind=iskey(lex); nblex++; ** else if(isid(lex)>=0) { resultat[nblex].type="id"; resultat[nblex].ind=isid(lex); nblex++; ** else { id[nbid]=lex; resultat[nblex].type="id"; resultat[nblex].ind=nbid; nbid++; nblex++; ** break; case 2: lex=""; while(test(req[k])==2) {lex=add(lex,req[k]);k++;** k--; printf("%s\n",lex); resultat[nblex].type="const"; resultat[nblex].ind=-1; nblex++; break; case 3: printf("%c\n",req[k]); resultat[nblex].type="sep"; resultat[nblex].ind=issep(req[k]); nblex++; break; case 4:printf("space\n"); break; default: printf("erreur"); ** k++; ** for(int h=0;h getch(); ** merci !! Citer Link to post Share on other sites
Zazou 10 Posted January 30, 2009 Partager Posted January 30, 2009 Je n'ai rien pigé:confused: Tu peux m'expliquer:D Bonne journée:40::40: Citer Link to post Share on other sites
scofield2008 10 Posted January 30, 2009 Partager Posted January 30, 2009 Je n'ai rien pigé:confused: Tu peux m'expliquer:D Bonne journée:40::40: loll quand tu comprendera n'oublie pas d'en prendre des notes et me les passer car ana tani mafhamte fiha walou :mdr: Citer Link to post Share on other sites
djalti 10 Posted January 30, 2009 Partager Posted January 30, 2009 Je n'ai rien pigé:confused: Tu peux m'expliquer:D Bonne journée:40::40: j'ai rien pigé non plus ma tete va éclaté!!!!!!!!:crazy::mdr::04: Citer Link to post Share on other sites
Guest KRATOS Posted January 30, 2009 Partager Posted January 30, 2009 j'ai pas trop suivi ton problème ... à partir de ton analyseur tu peux introduire des règles syntaxiques (sauvagardées dans un fichier) et les utiliser tout simplement. il faudrait détailler ton problème Citer Link to post Share on other sites
admin 2 Posted January 30, 2009 Partager Posted January 30, 2009 ** merci !! Merci pourquoi ? Moi qui suis dans l'informatique j'ai rien compris a ton post... Citer Link to post Share on other sites
Guest KRATOS Posted January 30, 2009 Partager Posted January 30, 2009 Merci pourquoi ? Moi qui suis dans l'informatique j'ai rien compris a ton post... il a défini un programme qui peut reconnaitre les mots clefs SQL sauf qu'il ne peut pas vérifié par l'exemple l'ordre. en gros, il veut peut être un programme qui fait ça :D Citer Link to post Share on other sites
Diabolo 10 Posted January 30, 2009 Partager Posted January 30, 2009 jais tous comprie c une analyse pour les analyseurs de programme d'analysateure d'une analysation pour analyser les analyses de chkil :D Citer Link to post Share on other sites
Amokrane 10 Posted February 1, 2009 Partager Posted February 1, 2009 idem, pas trop compris son problème ! En +, il devrait utiliser pastebin pour enregistrer son code au lieu de le coller à la sauvage comme ça :D [EDIT]: ou la balise code tout simplement! J'ai pas vu qu'il y'en avait une Citer Link to post Share on other sites
spiders 10 Posted August 22, 2009 Partager Posted August 22, 2009 #include #include #include #include typedef struct { char *type; int ind; ** unite; unite resultat[50]; int nbid,nblex,k; char *id[50]; char *key[10]; char sep[5]; char *lex,*req; int test(char u) { if((u>='a')&&(u<='z')) return 1; if((u>='0')&&(u<='9')) return 2; if((u==',')||(u==';')||(u=='(')||(u==')')) return 3; if((u==' ')) return 4; ** int iskey(char *u) { int i; for(i=0;i<3;i++) if(strcmp(u,key[i])==0) return i; return -1; ** char *add(char *s1,char c) { char *s=(char *)malloc(10* sizeof(char)); sprintf(s,"%s%c",s1,c); return s; ** int isid(char *u) { int i; for(i=0;iif(strcmp(u,id[i])==0) return i; return -1; ** int issep(char u) { int i; for(i=0;i<3;i++) if(u==sep[i]) return i; return -1; ** void main() { clrscr(); key[0]="create"; key[1]="table"; key[2]="select"; sep[0]='('; sep[1]=')'; sep[2]=','; gets(req); k=0; nbid=0; nblex=0; while(k{ switch(test(req[k])) { case 1:lex=""; while((test(req[k])==1)||(test(req[k])==2)) {lex=add(lex,req[k]);k++;** k--; printf("%s \n",lex); if(iskey(lex)>=0) { resultat[nblex].type="key"; resultat[nblex].ind=iskey(lex); nblex++; ** else if(isid(lex)>=0) { resultat[nblex].type="id"; resultat[nblex].ind=isid(lex); nblex++; ** else { id[nbid]=lex; resultat[nblex].type="id"; resultat[nblex].ind=nbid; nbid++; nblex++; ** break; case 2: lex=""; while(test(req[k])==2) {lex=add(lex,req[k]);k++;** k--; printf("%s\n",lex); resultat[nblex].type="const"; resultat[nblex].ind=-1; nblex++; break; case 3: printf("%c\n",req[k]); resultat[nblex].type="sep"; resultat[nblex].ind=issep(req[k]); nblex++; break; case 4:printf("space\n"); break; default: printf("erreur"); ** k++; ** for(int h=0;hgetch(); voila c son code Citer Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.