begin process at 2010 03 14 08:51:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > PARSEUR GÉNÉRAL

PARSEUR GÉNÉRAL


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :parseur, calcul, opération, chaines Niveau :Initié Date de création :29/01/2009 Date de mise à jour :25/12/2009 00:23:12 Vu / téléchargé :1 716 / 144

Auteur : mehdicherti

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

 Description

C'est un parseur général et simple qui permet de calculer une expression quelconque avec les opérateurs et fonctions qu'on choisit en gérant la priorité des opérateurs. les types de variables utilisés dans les expressions sont quelconques (void*) et l'allocation est dynamique . il est possible de le changer de manière à obtenir ce qu'on veut . par exemple on pourrait l'utiliser pour faire un calcul numérique comme on pourrait l'utiliser pour dessiner une fonction en écrivant l'expression avec des "x".

Utilisation & Explications : Regarder l'exemple
(Il y a un fichier Makefile pour la compilation linux et un fichier de projet de Dev-c++ pour la compilation pour windows)

(il y a un deuxième exemple qui utilise SDL et SDL_gfx pour tracer des fonctions , il fonctionne mais il doit être amélioré)

C'est la première version du parseur , j'attend vos critiques/remarques pour l'améliorer.






 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

25 décembre 2009 00:23:12 :
- Ajout d'une sorte de compilation qui traduit les chaines de caractères en arbre pret a etre utilisé - Ajout des fonctions avec plusieurs variables - Ajout d'un preprocesseur qui traite les chaines avant qu'elles soient compilées - Correction de quelques bugs - Affichage des fonctions 2D avec l'exemple 2 : utilise SDL , SDL_ttf , SDL_image et SDL_gfx

 Sources de la même categorie

Source avec une capture POWER MATH: TESTE DE VITESSE ENTIERS VS REELS , CLASS VS STR... par dedalusman
Source avec Zip PARSER XML par MagnumPP
[C BZLIB] LIRE ET ÉCRIRE UN FICHIER COMPRESSÉ par Zestyr
Source avec Zip Source avec une capture BOT DE CLIC (SIMULATION DE CLIC PARAMÈTRABLE) par jojo930
Source avec Zip Source avec une capture [C++] GENERATEUR DE PSEUDO par Miwik

 Sources en rapport avec celle ci

Source avec une capture CONVERTISSEUR par smartties
Source avec une capture CALCUL DE VARIANCE par Minilogus
Source avec une capture CALCUL D'INCERTITUDE par Minilogus
PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
Source avec Zip LIDY - BIBLIOTHÈQUE DE GESTION DE MATRICES CREUSES par nicolas66

Commentaires et avis

Commentaire de Saros le 02/02/2009 01:21:43

Ton code a l'air puissant.

Mes connaissance dans ce domaine du C/C++ sont limitées, mais je pense que tu dois pouvoir te débrouiller pour gérer un nombre quelconque de variables dans tes fonctions, sans devoir prévoir à l'avance ce nombre dans ta fonction Add_To_TSymbole. Ça permettrait de définir des fonctions genre somme(expr, var, debut, fin), min(e1,e2,e3,...) etc

Autrement je vois pas beaucoup d'applications non-mathématiques, c'est dommage car j'imagine que ce genre de code peut s'adapter à plein de domaines. C'est dans un cadre scolaire/professionnel que tu l'as programmé ?

Petites remarques sur le code :
Dans mdcparseur.c,
L111 tu écris "char *tmp = exp;"
puis L128 "tmp = exp;" ce qui est redondant.
L112 tu initialises index et pas index_symb, alors que tu pourrais très bien n'initialiser aucun des deux, c'est un peu maladroit.
Dans ta fonction STRNSTR, tu prends en paramètre "int n" et tu ne l'utilises pas.
Un moment il y a une variable que tu appelles exp. C'est le même nom que la fonction "exp" de la librairie cmath, il y a peut-être un risque de confusion.
De manière générale tes noms de variables sont pas très parleurs, c'est pas très agréable de te relire.

Le reste j'ai pas trop regardé en détail... mais je me pose 2 questions
- Est-ce qu'on peut programmer avec ton parseur un programme qui afficher une expression mathématique en 2D à l'écran ? ça peut être cool
- J'ai l'impression (encore une fois, je ne fais que survoler le code) que ton programme évalue directement sur la chaine caractères qu'on lui donne en entrée. Je pense que ce serait beaucoup plus flexible si ton parseur transformait simplement la chaîne en arbre, dont les éléments seraient les opérateurs et les opérandes, et que la fonction évalue opérait directement sur l'arbre. En particulier, ça donnerait un code qui pourrait facilement faire de la dérivation formelle par exemple, ou de la "simplification" d'expressions, ou bien simplement l'affichage de formules comme je l'ai proposé plus haut.

Voilà voilà... J'aime beaucoup, je pense que ça pourra être utile à beaucoup de gens.

Commentaire de mehdicherti le 03/01/2010 16:15:43

Merci saros pour tes idées qui ont permis d'améliorer certains points :

Ajout d'une sorte de compilation qui traduit les chaines de caractères en arbre pret a etre utilisé - Ajout des fonctions avec plusieurs variables - Ajout d'un preprocesseur qui traite les chaines avant qu'elles soient compilées - Correction de quelques bugs - Affichage des fonctions 2D avec l'exemple 2 : utilise SDL , SDL_ttf , SDL_image et SDL_gfx

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calcul d'une opération en millisecondes [ par Thanatos ] Bonjour,Comment peut-on estimer le temps d'un calcul en millisecondes sous Borland C++ ?Je fais un programme qui compare les différents tris et j'aime chaines de caractère [ par overfun ] salut à tous,voila mon probleme:j'ai fait un mini programme ( je suis debutant ) qui écrit des données dans un fichier mais le probleme c'est que je n Comment faire des tableaux de chaines de caractères ? [ par ProGamer ] Je veux faire des tableaux de chaines de caractères I want to make arrays of strings, mais en utilisant seulement le type de base, char.J'ai essayé ce Comment faire des tableaux de chaines de caractères ? [ par ProGamer ] Je veux faire des tableaux de chaines de caractères I want to make arrays of strings, mais en utilisant seulement le type de base, char.J'ai essayé ce calcul d'un modulo [ par cabarrus ] Qui peu m'aidé s.v.p pour ce problème...Ecrire un prog qui demande 2 nbres à l'utilisateur et qui affiche le reste de la division du 1er par le second Les «class» pour débutant [ par cognac ] Voici un petit programme:|||||||||||||| constante.h||||||||||||#ifndef CONSTANTES#define CONSTANTES#include <iostream>#include <stdio.h>us Pb de calcul de la visibilité d'1 objet [ par ngryman ] Salut, bon g un petit pb pr calculer si une bounding box se trouve affichée à l'écran, je sais qu'il fo faire ca par rapport aux plans du champ de vis Opération sur les dates [ par daddy33 ] Comment fait-on pour faire des opérations sur des dates : exple : date de livraison - date commande ce genre de truc, quelle bibliotheque il faut incl calcul [ par coockiesch ] Hello.Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.Je ne sais pas commen Prog de calcul matriciels [ par tchoumi ] Salut ! Je débute en prog et j'ai un petit problème pour réaliser un prog de calcul de matrice.Il faut que face comme calcul---> Produit=MatriceA*M


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,827 sec (4)

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