Compilateur symtaxique c
Fermé
nike
-
29 janv. 2009 à 22:56
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 29 janv. 2009 à 23:22
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 29 janv. 2009 à 23:22
A voir également:
- Compilateur symtaxique c
- Telecharger code blocks avec compilateur - Télécharger - Langages
- Compilateur basic gratuit - Télécharger - Édition & Programmation
- Compilateur pascal - Télécharger - Édition & Programmation
- Free Pascal - Télécharger - Édition & Programmation
- Compilateur c++ windows - Télécharger - Langages
7 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2009 à 22:59
29 janv. 2009 à 22:59
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();
}
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2009 à 23:07
29 janv. 2009 à 23:07
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
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2009 à 23:15
29 janv. 2009 à 23:15
Ben j'ai jamais fait d'analyseur syntaxique alors je peux pas trop t'aider....
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
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 janv. 2009 à 23:22
29 janv. 2009 à 23:22
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