IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Design Patterns Discussion :

comment utiliser le design pattern de visiteur pour créer un compilateur


Sujet :

Design Patterns

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut comment utiliser le design pattern de visiteur pour créer un compilateur
    Bonjour,

    J'aimerais savoir comment utiliser le design pattern de visiteur pour créer un compilateur.

    j'ai une grammaire, puis en utilisant un convertisseur BNF j'arrive à générer un fichier (.java) représentant le design pattern de visiteur.

    Je dois utiliser ce dernier pour construire un compilateur spécifique au langage spécifié, mais j'ai un problème avec le type retourné.

    c.à.d:

    "The meaning of the Java Visitor

    interface Exp.Visitor <R,A>: collection of methods for

    * visiting trees of type Exp
    * returning a value of type R
    * using an extra argument of type A"

    Si je veux utiliser plusieurs types, j'ai un problème car je dois remplacé R avec un seul types.

    Merci

    Katim

  2. #2
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Tu pars d'une BNF, pour arriver à un .java (le code = pattern visiteur , mais visiteur de quoi ? quel rapport avec la BNF du départ? )

    Ensuite le Visiteur doit prendre un langage , et générer un compilo ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    bonjour,

    " La création d'un arbre syntaxique abstrait pour un langage décrit par sa grammaire est facile pour la plupart des langages."

    Généralement une grammaire est spécifiée en utilisant la notation BNF. Une fois j'ai la spécification du grammaire , je peux utiliser un BNF convertisseur pour générer automatiquement cet arbre. Et j'arrive à générer aussi un fichier (.java) représentant le design pattern de visiteur.

    Ainsi que la construction des compilateur moderne se base sur l'utilisation du design pattern de visiteur.

    En bref, j'ai un arbre syntaxique abstrait et je veux visiter ses nœuds.je veux utiliser ce fichier généré pour construire un compilateur.

    Merci

    Katim

  4. #4
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Selon moi, un compilateur est bien plus que la simple utilisation de visiteur sur un arbre syntaxique. Il faut généralement y associer un automate à états (et bien souvent à pile) ainsi qu'un table des noms et des valeurs (pour les variables définies au cours du langage par exemple).

    Quoiqu'il en soit, le pattern visiteur permet en gros d'ajouter des méthodes à un composite (ici ton arbre syntaxique) sans y toucher (donc ca correspondrait un peu à ce que tu veux).

    J'ai bien compris ton histoire, mais je ne vois pas où se situe ton problème exactement. Tu n'arrive pas à utiliser ton Visiteur ? Pourquoi ne le code tu pas toi même (ou dit autrement, quel gain apporte sa génération?) ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    j'ai un problème avec le type retourné.

    c.à.d:

    "The meaning of the Java Visitor

    interface Exp.Visitor <R,A>: collection of methods for

    * visiting trees of type Exp
    * returning a value of type R
    * using an extra argument of type A"


    Si je veux utiliser plusieurs types, j'ai un problème car je dois remplacé R avec un seul type.

    par exemple, si j'ai un arbre représentant les expressions arith pour les entiers et pour les réels???

    est ce que vous pouvez m'aider sur les visiteurs en java??

    Merci.
    Katim

  6. #6
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    par exemple, si j'ai un arbre représentant les expressions arith pour les entiers et pour les réels???
    Visiteur s'aplique à un Composite normalement, donc tous les objets "visitables" doivent avoir le meme type (ou au minimum, respecter la meme interface). Dans le cas des entier/reel, il faut une interface INombre, ou une classe mère Nombre par exemple.

    est ce que vous pouvez m'aider sur les visiteurs en java??
    Je veux bien essayer ^^

Discussions similaires

  1. Utilisation du Designe pattern command
    Par menzlitsh dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 07/02/2009, 11h19
  2. Utiliser un design pattern
    Par tuxmat dans le forum Design Patterns
    Réponses: 6
    Dernier message: 18/08/2008, 21h06
  3. Réponses: 6
    Dernier message: 29/06/2007, 12h43
  4. Réponses: 6
    Dernier message: 03/05/2007, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo