Analyseur syntaxique en c

Soyez le premier à donner votre avis sur cette source.

Vue 21 801 fois - Téléchargée 3 299 fois

Description

Voila il s'agit d'un analyseur syntaxique d'une petite calculatrice. Le prog analyse la syntaxe de l'opération entrée par l'utilisateur et renvoie le résultat si elle est correcte.Il faut mettre un '#' a la fin de l'opération avant de taper sur entrée. Exemple: 2+(63*452)#
A+,
Haldwin.

Source / Exemple :


Ci-dessous le code du main de l'analyseur:

void main()
{
	strcpy(str[0].tab,"sqr");
	strcpy(str[1].tab,"sqrt");
	

	gets(commande);
	carlu = commande[0];

	if(commande[0] == 0)
	{
		printf("Chaine vide.\n");
		erreur();
	}
	else
	{
		index=1;
		sommet = -1;
		expression();
		if(prochain != C_FINI)
		{
			printf("Chaine ayant une erreur.\n");
			/*erreur();*/
		}
		else
		{
			printf("Analyse syntaxique correcte.\n");
			printf("Le resultat est: %d\n",depiler(tab, &sommet));
		}
	}
	getch();
}

Téléchargé le code si vous souhaitez avoir le code entier.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Lightness1024!
Messages postés
162
Date d'inscription
jeudi 15 mars 2001
Statut
Membre
Dernière intervention
1 avril 2005
-
attend une minute, tes chaines c des long ??
ton programme est vraiment tres tres bizare je sais pas ou tu as appris a programmer en C mais c pas dans un livre microsoft en tout cas...
bramme
Messages postés
1
Date d'inscription
samedi 30 novembre 2002
Statut
Membre
Dernière intervention
30 novembre 2002
-
Tout a fait d'accord!
On dirait un melange de Turbo Pascal et de basic!
Haldwin
Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004
-
Rien à ajouter après des commentaires si constructifs!!!
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2 -
Salut Haldwin,
voici quelque petit conseil pour ameliorer ta source :
* avoir des nombres a virgules
* gestion des erreurs relatives a la division par 0
* gestion du moins unaire
* gestion du sqrt CORRECT, avec detection de nombre negatif (pour l'instant sqrt(6-10)# donne 16 ?!?!

bon la crois que c'est deja beaucoup !
Si tu veux voir un exemple :
http://www.cppfrance.com/article.aspx?Val=2213

A+
nhoracio
Messages postés
3
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
14 novembre 2007
-
Ben moi, j'ai essayé ton code et j'ai pas pu en tirer grand chose. En plus, tes commentaires ne sont pas des meilleurs. Félicitation quand même pour avoir essayé

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.