begin process at 2012 02 10 14:01:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > ANALYSEUR LEXICAL POUR UN COMPILATEUR ALGORITHMIQUE

ANALYSEUR LEXICAL POUR UN COMPILATEUR ALGORITHMIQUE


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :compilation, lexical, mini compilateur Niveau :Débutant Date de création :24/07/2008 Date de mise à jour :24/07/2008 22:25:32 Vu / téléchargé :8 712 / 659

Auteur : mohtouati

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Ce programme  fait une analyse lexical pour un compilateur algorithmique il détecte les erreurs lexical est toute les unités lexicales fixés au début.  

Source

  • #include<stdio.h>
  • #include<math.h>
  • #include<string.h>
  • #include <conio.h>
  • #include<stdlib.h>
  • #include<dos.h>
  • int i,j,l,x;
  • char code[1000][20];
  • char typ[1000];
  • int tc;/////////////////////ti pour se deplacer dans la table code/////////
  • int err=1;
  • ///////////////////////////les fonction de l'analyseur syntaxique /////////
  • void algo();
  • void declaration();
  • void type();
  • void instruction();
  • void inst();
  • void instaffectation();
  • //////////////////////////////////////////////////////////////////la fonction pour l'analyse lexical
  • int f(char sy)
  • {
  • int s;
  • if(sy >= 'a' && sy <= 'z')
  • {
  • s=0;
  • }
  • else
  • {
  • if(sy >= '0' && sy <= '9')
  • {
  • s=1;
  • }
  • else
  • {
  • if(sy=='.')
  • {s =2;}
  • else
  • s=-1;
  • }
  • }
  • return s;
  • }
  • /////////////////////////////////////////////////////le programme principale ///////////////////////////////////////////
  • main()
  • {
  • int v,ec,ind,u; //''ind'' pour l'indice dans le tableau syntaxique
  • char tc;
  • v=0;
  • int mat[10][10];
  • mat[0][0]= 1;
  • mat[0][1]= 2;
  • mat[0][2]= -1;
  • mat[1][0]= 1;
  • mat[1][1]= 1;
  • mat[1][2]= -1;
  • mat[2][0]= -1;
  • mat[2][1]= 2;
  • mat[2][2]= 3;
  • mat[3][0]= -1;
  • mat[3][1]= 4;
  • mat[3][2]= -1;
  • mat[4][0]= -1;
  • mat[4][1]= 4;
  • mat[4][2]= -1;
  • char cs[1000],c1[20],c2[10],c3[10];
  • char p;
  • char motres[][20]= {"si", "tantque","fair","fait","pour","sinon","alors","var","reel","entier","char","algorithme","debut","fin"};
  • char opr[][20]= {"+","*","-","/","et","ou","non","<","<=",">",">=",":=","<>"};
  • char separ[][20]={";"," "};
  • gets(cs);
  • //printf("%d",strlen(cs));
  • printf("\n");
  • c1[0]='#';
  • strncat(cs,c1,1);
  • //printf("%d",strlen(cs));
  • printf("\n");
  • ind=0;
  • i=0;
  • while(cs[i]!='#')
  • {
  • //getch();
  • while((f(cs[i])==-1)&&(cs[i]!='#'))
  • {
  • if(cs [i]=='+')
  • {
  • printf("\n\n");
  • printf("+ est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='+';
  • ind=ind+1;
  • }
  • if(cs [i]=='*')
  • {
  • printf("\n\n");
  • printf("* est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='*';
  • ind++;
  • }
  • if(cs [i]=='/')
  • {
  • printf("\n\n");
  • printf("/ est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='/';
  • ind++;
  • }
  • if(cs [i]=='-')
  • {
  • printf("\n\n");
  • printf("- est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='-';
  • ind++;
  • }
  • if(cs [i]=='<')
  • {
  • if(cs [i+1]=='=')
  • {
  • printf("\n\n");
  • printf("<= est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='<';
  • code[ind][1]='=';
  • ind++;
  • i++;
  • }
  • if(cs [i+1]=='>')
  • {
  • printf("\n\n");
  • printf("<> est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='<';
  • code[ind][1]='>';
  • ind++;
  • i++;
  • }
  • else
  • {
  • printf("< est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='<';
  • ind++;
  • }
  • }
  • if((cs [i]=='>'))
  • {
  • if(cs [i+1]=='=')
  • {
  • printf(">= est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='>';
  • code[ind][1]='=';
  • ind++;
  • i++;
  • }
  • else
  • {
  • printf("> est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]='>';
  • ind++;
  • }
  • }
  • if((cs [i]==':')&&(cs [i+1]=='='))
  • {
  • printf(":= est un opérateur\n\n");
  • typ[ind]='o';
  • code[ind][0]=':';
  • code[ind][1]='=';
  • ind++;
  • i++;
  • }
  • if(cs [i]==';')
  • {
  • printf("; est un separateur\n\n");
  • typ[ind]='s';
  • code[ind][0]=';';
  • ind++;
  • }
  • i++;
  • }
  • // getch();
  • j=i;
  • while((f(cs[j])!=-1))
  • j++;
  • ////////////////////////extraction de la chaine a analysé//////////////////////////
  • //for(u=0;u<20;u++) //pour ecraser la c1
  • // c1[u]=' ';
  • l=i;
  • while((l<=j)&&cs[l]!='#')
  • {
  • p=cs[l];
  • c1[l-i]=p;
  • l++;
  • }
  • u=0;
  • c1[j-i]='#';
  • while(c1[u]!='#')
  • {
  • code[ind][u]=c1[u];
  • u++;
  • }
  • //ind=ind+1;
  • //getch();
  • /*printf("\n");
  • printf("c1 =%s",c1);
  • printf("\n\n");
  • printf("code%d=",ind-2,code[ind-2]);
  • printf("\n\n");
  • printf("code%d =%s",ind-1,code[ind-1]);
  • printf("\n");
  • //printf("%s",cs);*/
  • ////////////////// analyse de la chaine cs(i.j-1)////////////////////////////////
  • if(c1[0]=='#')
  • v=10;
  • ////////////////////le traitement avec les tableau /////////////////////////////
  • if (v==0)
  • {
  • x=0;
  • while(c1[x]!='#')
  • {
  • x++;
  • }
  • // printf("%d",x);
  • for(l=0;l<=13;l++)
  • {
  • if(strlen(motres[l])==x)
  • {
  • if(strncmp(c1,motres[l],x)==0) //strlen(motres[l])
  • {v=1;}
  • }
  • }
  • //printf("%d",v);
  • x=0;
  • while(c1[x]!='#')
  • {
  • x++;
  • }
  • if(v==0)
  • {
  • for(l=0;l<=11;l++)
  • { if(strlen(opr[l])==x)
  • {
  • if(strncmp(c1,opr[l],strlen(opr[l]))==0)
  • v=2;
  • }
  • }
  • }
  • }
  • ///////////////////////////////le traitement avec l'autoamte//////////////////
  • if(v==0)
  • {
  • l=0;
  • tc=c1 [l];
  • ec=0;
  • while((ec!=-1)&&(tc!='#'))
  • {
  • l++;
  • ec=mat[ec][f(tc)];
  • tc=c1 [l];
  • }
  • if(ec==1)
  • {
  • printf("\n");
  • v=3;
  • //printf("c'est un identificateur");
  • }
  • else
  • {
  • if(ec==2)
  • {
  • printf("\n");
  • v=4;
  • //printf("c'ent une constante entière ");
  • }
  • else
  • {
  • if(ec==4)
  • {
  • printf("\n");
  • v=5;
  • // printf("c'ent une constante réelle ");
  • }
  • else
  • {
  • printf("\n");
  • v=6;
  • // printf("erreur lexicale");
  • }
  • }
  • }
  • }
  • //printf("\n");printf("\n");printf("\n");printf("\n");
  • //printf("j=%d",j);
  • //printf("\n");printf("\n");
  • //printf("cs[j]=%c",cs[j]);
  • printf("\n");
  • printf("\n");
  • l=0;
  • while(c1[l]!='#')
  • {
  • printf("%c",c1[l]);
  • l++;
  • //getch();
  • }
  • printf("\n");
  • if(v==1)
  • {
  • printf("c'est un mot réservé");
  • typ[ind]='m';
  • ind++;
  • printf("\n");
  • }
  • if(v==2)
  • {
  • printf("c'est un operateur");
  • typ[ind]='o';
  • ind++;
  • printf("\n");
  • }
  • if(v==3)
  • {
  • printf("c'est un identificateur");
  • typ[ind]='i';
  • ind++;
  • printf("\n");
  • }
  • if(v==4)
  • {
  • printf("c'ent une constante entière ");
  • typ[ind]='e';
  • ind++;
  • printf("\n");
  • }
  • if(v==5)
  • {
  • printf("c'ent une constante réelle ");
  • typ[ind]='r';
  • ind++;
  • printf("\n");
  • }
  • if(v==6)
  • {
  • printf("erreur lexicale");
  • typ[ind]='#';
  • ind++;
  • printf("\n");
  • }
  • v=0;
  • i=j;
  • }
  • /*** le tableau typ contien les types des unité lexicale assosier au meme
  • emlasement que dans la table code:
  • e ----> entier
  • r----->reelle
  • i----->identificateur
  • m----->mot réservé
  • o----->operateur
  • s----->separateur
  • #----->erreur lexicale
  • ***/
  • ///////////////////////////fin de l'analyse lexical/////////////////////////////////////////////////////////////////////
  • printf("\n\n");
  • printf("les unités lexicales a traité dans l'analyseur syntaxique");
  • printf("\n\n");
  • //printf("%s",code [0]);
  • for(u=0;u<ind;u++)
  • {
  • printf(" %s",code[u]);
  • printf("\n");
  • }
  • ///////////////////////////////////debut de l'analyse syntaxique//////////////////////////////////
  • getch();
  • }
#include<stdio.h>
#include<math.h>
#include<string.h>
#include <conio.h>
#include<stdlib.h>
#include<dos.h>
int i,j,l,x;
char code[1000][20];
char typ[1000];




int tc;/////////////////////ti pour se deplacer dans la table code/////////
int err=1;
///////////////////////////les fonction de l'analyseur syntaxique /////////
void algo();
void declaration();
void type();
void instruction();
void inst();
void instaffectation();



//////////////////////////////////////////////////////////////////la fonction pour l'analyse lexical
int f(char sy)
{
int s;
if(sy >= 'a' && sy <= 'z')
	{
	 s=0;
	}
	else
	{
	if(sy >= '0' && sy <= '9')
		{
		s=1;
		}
		else
		{
		if(sy=='.')
		{s =2;}
		else
		s=-1;
		}

	}


 return s;
}
/////////////////////////////////////////////////////le programme principale  ///////////////////////////////////////////
main()
{

int v,ec,ind,u;          //''ind'' pour l'indice dans le tableau syntaxique
char tc;
v=0;
 int	mat[10][10];
 mat[0][0]= 1;
 mat[0][1]= 2;
 mat[0][2]= -1;

 mat[1][0]= 1;
 mat[1][1]= 1;
 mat[1][2]= -1;

 mat[2][0]= -1;
 mat[2][1]= 2;
 mat[2][2]= 3;

 mat[3][0]= -1;
 mat[3][1]= 4;
 mat[3][2]= -1;

 mat[4][0]= -1;



 mat[4][1]= 4;
 mat[4][2]= -1;

char cs[1000],c1[20],c2[10],c3[10];
char p;
char  motres[][20]= {"si", "tantque","fair","fait","pour","sinon","alors","var","reel","entier","char","algorithme","debut","fin"};
char opr[][20]= {"+","*","-","/","et","ou","non","<","<=",">",">=",":=","<>"};
char separ[][20]={";"," "};

gets(cs);
//printf("%d",strlen(cs));
printf("\n");
c1[0]='#';
strncat(cs,c1,1);
//printf("%d",strlen(cs));
printf("\n");

 ind=0;

i=0;

while(cs[i]!='#')
	 {
		  //getch();
				while((f(cs[i])==-1)&&(cs[i]!='#'))
					{

					if(cs [i]=='+')
					{
					printf("\n\n");
					printf("+ est un opérateur\n\n");
					typ[ind]='o';
					code[ind][0]='+';
					ind=ind+1;
					}

					if(cs [i]=='*')
					{
					printf("\n\n");
					printf("* est un opérateur\n\n");
					typ[ind]='o';
					code[ind][0]='*';
					ind++;
					}

					if(cs [i]=='/')
					{
					printf("\n\n");
					printf("/ est un opérateur\n\n");
					typ[ind]='o';
					code[ind][0]='/';
					ind++;
					}
					if(cs [i]=='-')
					{
					printf("\n\n");
					printf("- est un opérateur\n\n");
					typ[ind]='o';
					code[ind][0]='-';
					ind++;
					}

					if(cs [i]=='<')
					{
						if(cs [i+1]=='=')
							{
								printf("\n\n");
								printf("<= est un opérateur\n\n");
								typ[ind]='o';
								code[ind][0]='<';
								code[ind][1]='=';
								ind++;
								i++;
							}
						if(cs [i+1]=='>')
							{
								printf("\n\n");
								printf("<> est un opérateur\n\n");
								typ[ind]='o';
								code[ind][0]='<';
								code[ind][1]='>';
								ind++;
								i++;
							}
						else
							{
								printf("< est un opérateur\n\n");
								typ[ind]='o';
								code[ind][0]='<';
								ind++;
							}
					}

					if((cs [i]=='>'))
						{
							if(cs [i+1]=='=')
								{
									printf(">= est un opérateur\n\n");
									typ[ind]='o';
									code[ind][0]='>';
									code[ind][1]='=';
									ind++;
									i++;
								}
							else
								{
									printf("> est un opérateur\n\n");
									typ[ind]='o';
									code[ind][0]='>';
									ind++;
								}
					}

					if((cs [i]==':')&&(cs [i+1]=='='))
						{
							printf(":= est un opérateur\n\n");
							typ[ind]='o';
							code[ind][0]=':';
							code[ind][1]='=';
							ind++;
							i++;
						}
					if(cs [i]==';')
						{
							printf("; est un separateur\n\n");
							typ[ind]='s';
							code[ind][0]=';';
							ind++;
						}


						i++;
					}
				  //	getch();
				j=i;
				while((f(cs[j])!=-1))
					j++;

					////////////////////////extraction de la chaine a analysé//////////////////////////

						 //for(u=0;u<20;u++) //pour ecraser la c1
						 // c1[u]=' ';

						 l=i;
						 while((l<=j)&&cs[l]!='#')
						 {
						 p=cs[l];
						 c1[l-i]=p;
						  l++;
						 }
							u=0;
						 c1[j-i]='#';
						  while(c1[u]!='#')
						  {
							code[ind][u]=c1[u];
							u++;
							}
						 //ind=ind+1;



					 //getch();
					 /*printf("\n");
					 printf("c1 =%s",c1);
					 printf("\n\n");
					 printf("code%d=",ind-2,code[ind-2]);
					 printf("\n\n");
					 printf("code%d =%s",ind-1,code[ind-1]);
					 printf("\n");
					 //printf("%s",cs);*/



			  ////////////////// analyse de la chaine cs(i.j-1)////////////////////////////////

	  if(c1[0]=='#')
	  v=10;

			  ////////////////////le traitement avec les tableau /////////////////////////////

	  if (v==0)
	  {
	  x=0;
	  while(c1[x]!='#')
	  {
	  x++;
	  }
	 // printf("%d",x);
				 for(l=0;l<=13;l++)
					{
					 if(strlen(motres[l])==x)
					 {
					 if(strncmp(c1,motres[l],x)==0)     //strlen(motres[l])
					 {v=1;}
					 }
					}
					 //printf("%d",v);

					  x=0;
					  while(c1[x]!='#')
					  {
					  x++;
					  }
					 if(v==0)
					 {
						 for(l=0;l<=11;l++)
							{   if(strlen(opr[l])==x)
							{
								if(strncmp(c1,opr[l],strlen(opr[l]))==0)
								 v=2;
								 }
							}
					  }

		 }
	  ///////////////////////////////le traitement avec l'autoamte//////////////////
	  if(v==0)
	  {



				l=0;
				tc=c1 [l];
				ec=0;

				while((ec!=-1)&&(tc!='#'))
						 {
								l++;
								ec=mat[ec][f(tc)];
								tc=c1 [l];
						 }

				if(ec==1)
						{
							printf("\n");
							v=3;
							//printf("c'est un identificateur");
						}
						else
						{
							if(ec==2)
								{
									printf("\n");
									v=4;
									//printf("c'ent une constante entière ");
								}
								else
								{
									if(ec==4)
										{
											printf("\n");
											v=5;
										  //	printf("c'ent une constante réelle ");
										}
										else
										{
											printf("\n");
											v=6;
										  //	printf("erreur lexicale");
										}

								}
						}
		  }

		  //printf("\n");printf("\n");printf("\n");printf("\n");
		  //printf("j=%d",j);
		  //printf("\n");printf("\n");
		  //printf("cs[j]=%c",cs[j]);
			printf("\n");
			printf("\n");
			 l=0;
			 while(c1[l]!='#')
			 {
			  printf("%c",c1[l]);
			  l++;
				//getch();
			  }
			  printf("\n");
					 if(v==1)
						{
						printf("c'est un mot réservé");
						typ[ind]='m';
						ind++;
						printf("\n");
						}
					 if(v==2)
						{
						 printf("c'est un operateur");
						 typ[ind]='o';
						 ind++;
						 printf("\n");
						}
					  if(v==3)
						  {
							printf("c'est un identificateur");
							typ[ind]='i';
							ind++;
							 printf("\n");
						  }
					  if(v==4)
						 {
						 printf("c'ent une constante entière ");
						 typ[ind]='e';
						 ind++;
						 printf("\n");
						 }
					  if(v==5)
						 {
							printf("c'ent une constante réelle ");
							typ[ind]='r';
							ind++;
							printf("\n");
						 }
					  if(v==6)
						{
						printf("erreur lexicale");
						typ[ind]='#';
						 ind++;
						printf("\n");
						}
			 v=0;

		  i=j;
	 }

	 /***  le tableau typ contien les types des unité lexicale assosier au meme
		  emlasement que dans la table code:

		  e ----> entier
		  r----->reelle
		  i----->identificateur
		  m----->mot réservé
		  o----->operateur
		  s----->separateur
		  #----->erreur lexicale

																						***/
	  ///////////////////////////fin de l'analyse lexical/////////////////////////////////////////////////////////////////////
	  printf("\n\n");
	  printf("les unités lexicales a traité dans l'analyseur syntaxique");
	 printf("\n\n");
  //printf("%s",code [0]);
  for(u=0;u<ind;u++)
		{
			printf("  %s",code[u]);
			printf("\n");

		}

///////////////////////////////////debut de l'analyse syntaxique//////////////////////////////////













 getch();


}

 Conclusion

Ce programme donne une idée général sur les technique algorithmique traduit  en langage c

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 juillet 2008 22:04:28 :
lexical pas syntaxique exusé
24 juillet 2008 22:12:33 :
modification d'un commentaire
24 juillet 2008 22:25:32 :
le est cours de développement pour prévoir une éventuelle lecture en fichier.algo

 Sources du même auteur

Source avec Zip ALGORITHME DE DJIKSTRA
Source avec Zip Source avec une capture LA FERMETURE TRANSITIVE
Source avec Zip Source avec une capture COMPOSENTE CONNEXES D'UN GRAPHE
Source avec Zip LES ENCHÈRES

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTS MANAGER par eapaceinfo
Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip SCANNER LANGAGE par lajouad
Source avec Zip Source avec une capture CLEX ANALYSEUR LEXICALE DU LANGAGE C par xtremejames183
Source avec Zip Source avec une capture ANALYSEUR LEXICAL DU LANGAGE PASCAL par zakizaki7

Commentaires et avis

Commentaire de Cyberboy2054 le 25/07/2008 13:27:30

Tu peux mettre un exemple de code que ton programme execute stp ?
Ca a l'air bien excellent ce truc mais pour le moment on peut pas tester...

Commentaire de exar le 25/07/2008 14:10:29 8/10

Tu ne sauras rien exécuter, il ne fait pour l'instant que l'analyse lexicale !
Je n'ai pas essayé, mais ça a l'air correct (du point de vue fonctionnement).
Petite amélioration (enfin, tu en fais ce que tu veux): mets des switch / case à la place de ifs, ainsi, une fois qu'il a trouvé ce qu'il cherche, il ne doit plus tester...

Commentaire de mohtouati le 25/07/2008 20:28:09

C'est exact ce que  a dit exar pour les modifs de switch case c'est tout à fait vrai mais il ya encor d'autre modifs pour l'optimisé merci pour votre consultation  et remarques  

Commentaire de Cyberboy2054 le 26/07/2008 16:29:38

Ha ok (j'y connais rien)
Ca correspond à quoi du coup l'analyse lexicale ? Transformer un string en liste de token, ou egalement vérifier que par exemple apres un token "if " on a bien un token ouverture parenthese, du code, puis fermer parenthese ?

Ca sert à quoi de programmer un analyseur lexicale seul, à part vérifier si un code est bien conforme à certaines règles (une expression régulière par gex?)

Commentaire de mohtouati le 26/07/2008 20:55:50

Un analyseur lexical fait partie des structures de base lors de la construction d'un compilateur c'est pour séparer les unités lexicales également  reconnaitre les erreurs lexical par exemple:
« algorithme»appartiens au  langage il le reconnait  comme un mot réservé mais « algorithm »n'appartiens pas au langage donc c'est une erreur lexical
Sa répond a votre question  Cyberboy2054 ?

Commentaire de exar le 26/07/2008 22:48:55

mohtouati: pour moi, il semblait qu'il ne s'agissait que d'un analyseur lexical.  Donc, je me demande pq on te demande du code c++ !  Il va te taper une foultitude d'assembleur, comme à son habitude.  On se demande pq il est admin c++, parce qu'il en connait plus en asm qu'en c++...
Il va te refaire ton projet en trois lignes d'asm, avec un exécutable qui prendra moins d'1 Ko, parce qu'il travaille encore avec un XT des années 80, il te ridiculisera, il va te dire que seul l'ASM sauvera le monde, mais n'en crois rien ! Il y a déjà au moins 15 à 20 ans que les entreprises sérieuses se sont mises à autre chose que l'ASM.
En plus, il fait cela UNIQUEMENT pour Windaube !!!
Peine perdue, c'est un virus !
Mais c'est sans doute pour cela qu'il doit optimiser avec ASM...  Son âme a été vendue (pour pas cher) à Microsoft !

Commentaire de exar le 26/07/2008 22:50:22

Mon message n'est apparemment pas passé complet, je parlais  de Brunews...

Commentaire de omnia le 05/02/2009 19:16:40

EXAR << complètement hors sujet, maintenant si tu veux critiquer les gens qui essais de maitriser au maximum ce qu'ils font va leur dire directement.

EXAR << "Il y a déjà au moins 15 à 20 ans que les entreprises sérieuses se sont mises à autre chose que l'ASM."
laisse moi rire  la moitié des boite passe en .net, du langage à la va vite ou le développeur de maitrise rien, et ou après lors d' audits de sécurité on se retrouve avec des applications bourrés de bugs et de failles de sécu (dev de m.).

EXAR << et pour ce qui ai de microsoft sur lequel tu as l'air de cracher dans la soupe et bien c'est encore un des système les plus utilisé et les plus répendu du coté utilisateur. na :p (c'est un pro linux qui code qu'en windows ki dis sa :p)

mohtouati << le principe de ce code est très intéressant (je viens de voir la partie avec le code pascal pas mal, c'est le début d'un projet scolaire ou tu prévois de créer une appli ?

bon codage

Commentaire de snainoo le 22/03/2009 00:21:49

salut tout le monde
j aurais besoin d un code source en c pour un analyseur lexicale , un compilateur si possible
merci de m' aider
merci d'avance

Commentaire de medmounir1989 le 08/01/2010 16:53:34 10/10

merci cheriky    !
ou est l'analyseur sintaxique?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

COMPILATION AVEC VISUAL C++ [ par neuro ] SAlut,g des problemes ed compilation avec vc++ des que je vx compiler en c ou en c++.....ais je oublie des options,...Merci de me rendre moins aggress compilation d'apache 1.3.xx [ par Sephir ] Je suis à la recherche de quelqu'un qui pourrait m'expliquer comment compiler Apache 1.3.XX, j'utilise Visual Studio 6 entrepriseJe ne parviens pas à Pb de compilation [ par Cyberboy2054 ] Salut J' ai un piti problème de compilation en C++Quand j' ai terminé mon programme (un aplication console)je teste mon programme depuis le compilateu erreur de compilation avec l'install shield c++ [ par tsii ] une fois fini mon logiciel de programmation qui permet l'envoi d'email et autre fonctionpour mettre les executable sur disquettes en utilisant l'insta Compilation avec G++ [ par merlin ] voila je bosse sous beos linux bref sous unix et n'arrive pas a creer un fichier binaire mais pas elf ni a.out un binaire ( code machine ) y a t'il kk prob de compilation [ par jacky66 ] salutje debute dans la prog c++pour mon 1 er prog quand je compile il me sort un message fatal error C1083: Cannot open include file: 'idoctidm.h': No Problème de compilation de librairie... [ par ditch ] je me retrouve face à un énorme problème, en fait je dois compiler les librairies de imageMagick pour implémenter les fonctions de celles-ci dans une Creer un objet apres compilation en Borland c++ BUilder [ par lnvincible ] J'aimerais savoir la commande qui permet de creer un objet apres la compilation c'est a dire on clique sur un bouton et y'en a un deuxieme qui se cree compilation sous g++ avec des fichier module [ par bidules ] bonjour,voila j'ai un projet a realiser.Ce projet contiendra une class dans un fichier .h et les fonctions menbres dans un fichier cpp (le truc normal Thread [ par Vince007 ] Bonjour, je vous laisse se message pour savoir si qqu'un qui connait bien les thread et les sémaphores sous Linux pourrait m'indiquer la méthode de co


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 0,702 sec (4)

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