Compilateur symtaxique c
nike
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je vx au plus vite possible le compilateur syntaxique pr se programe c suivant qui est un compilateur lexical :
#include <stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
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;i<nbid;i++)
if(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<strlen(req))
{
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<nblex;h++) printf("%s: %d\n",resultat[h].type,resultat[h].ind);
getch();
}
je vx au plus vite possible le compilateur syntaxique pr se programe c suivant qui est un compilateur lexical :
#include <stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
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;i<nbid;i++)
if(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<strlen(req))
{
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<nblex;h++) printf("%s: %d\n",resultat[h].type,resultat[h].ind);
getch();
}
A voir également:
- Compilateur symtaxique c
- Code blocks avec compilateur - Télécharger - Langages
- Compilateur basic gratuit - Télécharger - Édition & Programmation
- Compilateur php - Télécharger - Divers Web & Internet
- Compilateur pascal - Télécharger - Édition & Programmation
- Compilateur algorithme - Télécharger - Édition & Programmation
7 réponses
je vx au plus vite possible le compilateur syntaxique pr se programe c suivant qui est un compilateur
Sinon...?
Sinon...?
je vx un programme c pr un compilateur syntaxique ,parceque j'ai programmé le compilateur lexical suivant et je vx le syntaxique au plus vite possible et merci ,le programme du compilateur lexical et le suivant :
#include <stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
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;i<nbid;i++)
if(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<strlen(req))
{
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<nblex;h++) printf("%s: %d\n",resultat[h].type,resultat[h].ind);
getch();
}
#include <stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
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;i<nbid;i++)
if(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<strlen(req))
{
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<nblex;h++) printf("%s: %d\n",resultat[h].type,resultat[h].ind);
getch();
}
Je ne comprends pas bien. Tu veux quoi en fait, du code Sql ou? Parce qu'apparemment c'est un analyseur syntaxique pour du Sql...
oui exactement c pour le sql,mais un programme écris en language C comme j'ai programmé moi, si tu me comprend pas passe moi ton adresse msn pour te parlé diréctement, parceque c'est vraiment urgent et merci bcp bcp bcp ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
méme avec un programme similaire a celui que j'ai programmé ,vous pouvez pas m'aider !!,vous etes le seul qui peux m'aider,alors svp,donne moi juste se que tu trouve,svp,et merci bcp
Ben non désolé je peux pas t'aider, tout ce que je peux te donner c'est ça:
https://www.google.fr/search?hl=fr&client=firefox-a&rls=com.ubuntu%3Afr%3Aunofficial&hs=MXf&q=analyse+syntaxique&btnG=Rechercher&meta=&gws_rd=ssl
https://www.google.fr/search?hl=fr&client=firefox-a&rls=com.ubuntu%3Afr%3Aunofficial&hs=MXf&q=analyse+syntaxique&btnG=Rechercher&meta=&gws_rd=ssl