Analyseur syntaxique en c

Soyez le premier à donner votre avis sur cette source.

Vue 22 393 fois - Téléchargée 3 403 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

Messages postés
46
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
25 février 2009

slt ,
pas grave pour un debutant faut le courager comme meme
n'est ce pas les gars !!
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é
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
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+
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!!!
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!
Afficher les 6 commentaires

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.