Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PARSER QUI SE VEUT GÉNÉRIQUE


Information sur la source



Description

Voici un code source sur lequel je travaille depuis quelques temps...
Il s'agit d'un parser qui se veut être générique, c'est-à-dire que les règles ne sont pas définies au départ. Il a été développé avec comme langage de référence le C like, et en partie le XML like...
La sortie est de type linéaire, mais je travaille actuellement sur une version en arbre, pour les langages plus descriptifs.

En C like, la vitesse de lecture avoisine les 20.000chars/s
 

Conclusion

A venir :
la correction des bugs éventuels (j'espère qu'ils seront peu nombreux)
un fichier expliquant le fonctionnement détaillé du parser
une version en arbre
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Kirua le 22/04/2006 14:12:10

[je simule une FAQ]

Hmm, le parser sort quoi exactement, une liste de lexèmes?

Comment spécifie-t-on la syntaxe?

Est-ce qu'on pourrait lire des expressions arithmétiques / logiques?

Si oui, la version "en arbre" permettra-t-elle de récupérer de suite l'arbre de l'expression?

signaler à un administrateur
Commentaire de dominion le 22/04/2006 14:23:27

Le parser sort une suite de lexèmes, plus exactement dans un map dont l'index est la position du lexem.
Pour spécifier la syntaxe, un exemple est donné dans le main. Comme je l'ai déjà dit, une documentation arrivera d'ici peu.
Expressions arithmétiques/logiques, tu penses à quoi ?

Quant à la version en arbre, je travaille actuellement sur la façon dont ce sera rendu, donc je ne préfère pas répondre encore.

signaler à un administrateur
Commentaire de Kirua le 22/04/2006 14:40:54

par exemple:
5*x + 3 > 1 && cos(pi/3) ^ (1/2) >= max(0.0, pi/6)

c'est une expr débile évidemment, mais c'est pr essayer de reprendre les éléments syntaxiques importants (opérateurs, priorités, parenthésage, fonctions mono/multi variables, valeurs réelles/entières etc)

j'ai pas mis de string dedans, mais ça serait indispensable pour réaliser un langage de script par exemple.

l'arbre à générer est déjà assez chiant à construire quand on sait ce qu'on fait, alors deviser un méthode générique, je serais positivement impressionné ... et soulagé dans mes futurs développements :D.

signaler à un administrateur
Commentaire de Kirua le 22/04/2006 14:44:26


this->ExpressionChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";

ça devrait pas plutôt être les identifier chars ?

signaler à un administrateur
Commentaire de Kirua le 22/04/2006 14:46:46

il te manque plein de mots clefs et pas mal d'opérateurs dans ton main.cpp ;)


masks[i] = new xParser_mask<L>(LX_EXPRESSION, "\"%\"");
masks[i+1] = new xParser_mask<L>(LX_EXPRESSION, "\\\"");

ça gère TOUTES les chaînes de caractères ça ?

signaler à un administrateur
Commentaire de dominion le 22/04/2006 15:02:04

Premier comment : oui, et la version en arbre gèrera les parenthèses.
Deuxième comment : si tu veux, c'est utilisé comme tel
Troisième comment : je sais et oui ^_^ enfin, ça gère toutes les chaines en C like... Si tu veux faire un test plus facile à comprendre, change la ligne 183 du main en
oli.Code = //code;
Ca prendra la chaine juste en dessous comme script, ce sera plus facile pour la compréhension, puisque plus court. Et tu verras par la même occasion que la chaine est parsée correctement.

signaler à un administrateur
Commentaire de Kirua le 22/04/2006 17:12:05

Ça me tue que tu utilises encore oli comme variable métasyntactique, c'est du narcissisme de pointe ^^.

signaler à un administrateur
Commentaire de dominion le 22/04/2006 17:19:42

non, c'est juste que les 3 touches sont placée l'une à côté de l'autre, et que j'ai l'habitude de signer oli, du coup ben c'est un réflexe...

signaler à un administrateur
Commentaire de Jallo2008 le 31/07/2008 14:18:27

j'ai récupérer ce code sur le parser generique. mais j'ai pas réussi à l'utiliser.
Je voudrais l'utiliser pour parser un projet codé en C++.
Est ce possible?
J'ai cette erreur de compilation:error C2065: 'clock_t' : undeclared identifier
Merci de votre aide

signaler à un administrateur
Commentaire de dominion le 10/08/2008 01:40:01

Cette version est périmée, je pourrai vous envoyer la nouvelle d'ici quelques temps, actuellement je suis en vacances, et je n'ai pas accès à mes sources.

signaler à un administrateur
Commentaire de uaip le 18/11/2008 17:13:40

Ce serait avec grand plaisir :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Pb pour intégrer un langage de script (Ch) avec C++ [ par MIPSMAJED ] Bonjour tout le monde, J'essaie d 'int&#233;grer un langage de script avec mon projet (sous VC++ 6.0), lors de ma pahse de test j'ai r&#233;ussi &#224 pb script [ par Arnaud16022 ] helloje voudrais faire un petit langage de script pour mon jeu (les missions) mais il se pose un probleme:exemple:if (c==123){....}if (c==d){.....}dan Renvoie au début du script [ par Malixxx13 ] Bonjour! J'aimerais savoir si il y a une façon de retourner au début du script pour lui faire refaire tout le script! J'aimerais aussi savoir qu'est-c Formation C++ [ par johann36 ] Bonjour,Je voudrai savoir si le langage C++ est dur à apprendre.J'ai déjà des connaissances sur d'autres langage (VB, Fox pro, Win dev ...).Je m'inter Votre avis m'intéresse passer de VB à C++ [ par cuq ] Bonjour,Je bidouille depuis pas mal de temps en VB et c'est un langage que j'adore. Cela me permet de créer rapidement et facilement des applis .Cepen Appel script cgi d'une WebCam IP en c++ [ par chasse18 ] Bonjour:)Nous travaillons sur un projet de cam Ip qui possède ses propres scripts CGI.Par une commande telle que :http://xx.xx.xx.xx:8080/axis-cgi/jp a l aide !!! [ par romigui ] est ce que quelqu un peu m aider ??? je m y connais pas du tout en programmation et je voudrais faire mes debuts , on m as dit qu il fallé d abord cho Programmation Systeme : Shell Linux [ par salvio3223 ] Re bonjour.J'ai une autre ( petite ? ) question à poser.Là encore je pense que cela est possible enfin ...Je voudrai exécuter un programme dans un scr Logigramme vers C [ par DoYL ] Bonjour, je suis en Terminale S science de l'ing&#233;nieur et pour mon projet il faut que je fasse du langage C, j'ai fais mon logigramme mais je n'a Timer en langage C sous envirronement Windows [ par BaptX ] Coucou &#224; tous,Je cherche &#224; faire un compte &#224; rebours en langage C sous environnement windows dans le cadre d'une d&#233;monstration &#2


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.