begin process at 2008 08 08 21:46:29
1 223 607 membres
365 nouveaux aujourd'hui
14 230 membres club

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
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

  • 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

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS