PARSER QUI SE VEUT GÉNÉRIQUE

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 22 avril 2006 à 14:12
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 18 nov. 2008 à 17:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37183-parser-qui-se-veut-generique

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
18 nov. 2008 à 17:13
Ce serait avec grand plaisir :)
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
10 août 2008 à 01:40
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.
Jallo2008 Messages postés 1 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 14:18
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
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
22 avril 2006 à 17:19
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...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 avril 2006 à 17:12
Ça me tue que tu utilises encore oli comme variable métasyntactique, c'est du narcissisme de pointe ^^.
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
22 avril 2006 à 15:02
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.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 avril 2006 à 14: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 ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 avril 2006 à 14:44
this->ExpressionChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";

ça devrait pas plutôt être les identifier chars ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 avril 2006 à 14:40
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.
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
22 avril 2006 à 14:23
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.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 avril 2006 à 14:12
[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?
Rejoignez-nous