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

avec Java Discussion :

AST de cobol en java


Sujet :

avec Java

  1. #41
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    L'entête du fichier .jj que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    /**
     * This is an experimental COBOL-85 grammar for JavaCC.
     * <p>References used for this grammar :<ol>
     * <li> Ralf Lämmel & Chris Verhoef : VS COBOL II grammar Version 1.0.3
     * <li> Fujitsu Cobol compiler reference
     * <li> Compaq-HP Non-stop Cobol reference
     * </od>
     * <p>This grammar is released under the GNU Library Public License (LGPL).
     * <p><address>Bernard Pinon, august 2002</address>
     * @see http://www.gnu.org/licenses/lgpl.html
     * @see http://www.cwi.nl/
     * @see http://www.wins.uva.nl/
     * @author Bernard Pinon (bpinon at benjamin dash media dot com)
     *
     * <p>History:<ul>
     * <li><date>9-aug-2002</date> [BP] make changes to comply with JTB :<ol>
     * <li> Changed Integer() to IntegerConstant() to avoid conflicts with java.lang.Integer
     * <li> Removed Java code to make the grammar bare bone
     * <li> Fixed Identification Division entries
     * </ol>
     * <li><date>8-aug-2002</date> [BP] fixed several bugs :<ol>
     *   <li> INSTALLATION section
     *   <li> wrong spelling in keywords
     *   <li> DOT missing in FD/SD entries
     *   <li> wrong regular expressions for levels
     *   <li> possibility to have repeated string literals, e.g. "AA" "BB" -> "AABB"
     *   <li> optimized data division by placing the most common clauses first
     *   <li> DOT missing in exit statement
     *   <li> confusion between Identifier and QualifiedDataName (to be checked)
     *   <li> fixed NumericConstant to use Integer instead of INTEGER
     *   <li> Correcting AdvancingPhrase so LINE is optional
     *   <li> Fixed problems with abbreviated conditions
     *   <li> Fixed Add statement
     *   </ol>
     * </ul>
     */
     
    /**
     * Cobol is not case sensitive. It is not LL(1) neither...
     */
     
    options {
      STATIC=false;
      IGNORE_CASE = true;
      FORCE_LA_CHECK = true;
      LOOKAHEAD = 4;
      DEBUG_PARSER = true;
      DEBUG_LOOKAHEAD = true;
    }
    C'est le même chez vous? Si non , tu serais prêt à me passer ton .jj? en échange d'amélioration et de debug éventuel (je vais travailler avec OpenCobol et MicroFocus en compilo par la suite, le tout en LGPL donc tout reste dispo )

    Et les commandes que j'ai lancé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    fgardes@ebm-25:~/data/cobconnect/parsercobol/src/org/objectweb/petals/parsercobol$ javacc cobol.jj 
    Java Compiler Compiler Version 4.1d1 (Parser Generator)
    (type "javacc" with no arguments for help)
    Reading from file cobol.jj . . .
    ...
    Parser generated with 0 errors and 130 warnings.
    fgardes@ebm-25:~/data/cobconnect/parsercobol/src/org/objectweb/petals/parsercobol$java -jar ../../../../../lib/jtb132.jar -jd -f -pp -tk -printer -o jtb.cobol.jj -p org.objectweb.petals.parsercobol cobol.jj
    JTB version 1.3.2
    JTB:  Reading from cobol.jj...
    JTB:  Input file parsed successfully.
    JTB:  "jtb.cobol.jj" generated to current directory.
    JTB:  Syntax tree Java source files generated to directory "syntaxtree".
     
    JTB:  "GJVisitor.java" generated to directory "visitor".
    JTB:  "Visitor.java" generated to directory "visitor".
    JTB:  "GJNoArguVisitor.java" generated to directory "visitor".
    JTB:  "GJVoidVisitor.java" generated to directory "visitor".
    JTB:  "GJDepthFirst.java" generated to directory "visitor".
    JTB:  "DepthFirstVisitor.java" generated to directory "visitor".
    JTB:  "GJNoArguDepthFirst.java" generated to directory "visitor".
    JTB:  "GJVoidDepthFirst.java" generated to directory "visitor".
     
    JTB:  "TreeDumper.java" generated to directory "visitor".
    JTB:  "TreeFormatter.java" already exists.  Won't overwrite.
     
    fgardes@ebm-25:~/data/cobconnect/parsercobol/src/org/objectweb/petals/parsercobol$
    Je suis passé en non statique mais cela ne change rien
    Tu pourrais me montrer la signature de ta méthode générée CompilationUnit()?
    Je dois faire quelque chose de pas bon avec JavaCC....
    Et j'ai suivi les même étapes, en me référant aux liens donnés:
    La grammaire
    le parser

  2. #42
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Voila mon main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
     
    import syntaxtree.CompilationUnit;
    import testparser.CobolParser;
    import visitor.TreeDumper;
    import visitor.TreeFormatter;
     
    public class Main {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		parse("/home/wje/Bureau/testcobol.cobol");
    		}
    		 public static void parse( String source ) {
    			    try {
    			      // open the source file
    			      File source_file = new File( source );
    			      FileInputStream is = new FileInputStream( source_file );
     
    			      // starts parsing
    			      CobolParser parser = new CobolParser( is );
    			      CompilationUnit unit = parser.CompilationUnit();
     
    			      // creates a formatter visitor
    			      TreeFormatter fmt = new TreeFormatter();
    			      fmt.visit( unit );
     
     
     
     
    			      // creates a dumper visitor
    			      FileOutputStream os = new FileOutputStream("/home/wje/Bureau/test.ast");
    			      TreeDumper dump = new TreeDumper(os);
    			      dump.visit( unit );
     
     
    			    }
    			    catch( Exception ex ) {
    			      ex.printStackTrace();
    			    }
     
     
    		 }
    		 }
    Et voila ma classe Compilationunit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    //
    // Generated by JTB 1.3.2
    //
     
    package syntaxtree;
     
    /**
     * Grammar production:
     * <PRE>
     * programUnit -> ProgramUnit()
     * nodeListOptional -> ( NestedProgramUnit() EndProgramStatement() )*
     * nodeOptional -> [ EndProgramStatement() ( CompilationUnit() )* ]
     * nodeToken -> &lt;EOF&gt;
     * </PRE>
     */
    public class CompilationUnit implements Node {
       private Node parent;
       public ProgramUnit programUnit;
       public NodeListOptional nodeListOptional;
       public NodeOptional nodeOptional;
       public NodeToken nodeToken;
     
       public CompilationUnit(ProgramUnit n0, NodeListOptional n1, NodeOptional n2, NodeToken n3) {
          programUnit = n0;
          if ( programUnit != null ) programUnit.setParent(this);
          nodeListOptional = n1;
          if ( nodeListOptional != null ) nodeListOptional.setParent(this);
          nodeOptional = n2;
          if ( nodeOptional != null ) nodeOptional.setParent(this);
          nodeToken = n3;
          if ( nodeToken != null ) nodeToken.setParent(this);
       }
     
       public CompilationUnit(ProgramUnit n0, NodeListOptional n1, NodeOptional n2) {
          programUnit = n0;
          if ( programUnit != null ) programUnit.setParent(this);
          nodeListOptional = n1;
          if ( nodeListOptional != null ) nodeListOptional.setParent(this);
          nodeOptional = n2;
          if ( nodeOptional != null ) nodeOptional.setParent(this);
          nodeToken = new NodeToken("");
          if ( nodeToken != null ) nodeToken.setParent(this);
       }
     
       public void accept(visitor.Visitor v) {
          v.visit(this);
       }
       public <R,A> R accept(visitor.GJVisitor<R,A> v, A argu) {
          return v.visit(this,argu);
       }
       public <R> R accept(visitor.GJNoArguVisitor<R> v) {
          return v.visit(this);
       }
       public <A> void accept(visitor.GJVoidVisitor<A> v, A argu) {
          v.visit(this,argu);
       }
       public void setParent(Node n) { parent = n; }
       public Node getParent()       { return parent; }
    }
    Et j'utile le cobol.jj ce trouvant à l'adresse suivante: http://mapage.noos.fr/~bpinon/cobol.jj

  3. #43
    Invité
    Invité(e)
    Par défaut
    tigroo31 : tu ne sembles pas avoir utilisé JTB dans tes commandes, peut -être la dofférence se fait là, car JTB ajoute pas mal de choses à ta garmmaire initiale

    EDIT : enfin je veux dire : il faut utiliser JTB pui javaCC sur la nouvelle grammaire

  4. #44
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    J'ai le même main exactement et la même classe CompilationUnit
    En fait ce qui m'intéresserait c'est dans ta classe CobolParser la signature de la méthode CompilationUnit() (et pas la classe ). la mienne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    ////////////////////////////////////////////////////////////////////////////////
    // COMPILATION UNIT.
    ////////////////////////////////////////////////////////////////////////////////
      static final public void CompilationUnit() throws ParseException {
        ProgramUnit();
        label_15:
        while (true) {
          if (jj_2_153(4)) {
            ;
          } else {
            break label_15;
          }
          NestedProgramUnit();
          EndProgramStatement();
        }
        if (jj_2_155(4)) {
          EndProgramStatement();
          label_16:
          while (true) {
            if (jj_2_154(4)) {
              ;
            } else {
              break label_16;
            }
            CompilationUnit();
          }
        } else {
          ;
        }
        jj_consume_token(0);
      }
    On voit bien que cela ne renvoit d'objet CompilationUnit, mais void . Tu as quoi toi?
    Et les commandes que tu as passé c'était quoi? moi j'ai fait "javacc cobol.jj" puis "java -jar ../../../../../lib/jtb132.jar -jd -f -pp -tk -printer -o jtb.cobol.jj -p org.objectweb.petals.parsercobol cobol.jj". Et toi?
    je suis en java 1.5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java version "1.5.0_15"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04)
    Java HotSpot(TM) Server VM (build 1.5.0_15-b04, mixed mode)
    Et merci pour l'aide!

  5. #45
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Voici ma classe Compilationunit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    //
    // Generated by JTB 1.3.2
    //
     
    package syntaxtree;
     
    /**
     * Grammar production:
     * <PRE>
     * programUnit -> ProgramUnit()
     * nodeListOptional -> ( NestedProgramUnit() EndProgramStatement() )*
     * nodeOptional -> [ EndProgramStatement() ( CompilationUnit() )* ]
     * nodeToken -> &lt;EOF&gt;
     * </PRE>
     */
    public class CompilationUnit implements Node {
       private Node parent;
       public ProgramUnit programUnit;
       public NodeListOptional nodeListOptional;
       public NodeOptional nodeOptional;
       public NodeToken nodeToken;
     
       public CompilationUnit(ProgramUnit n0, NodeListOptional n1, NodeOptional n2, NodeToken n3) {
          programUnit = n0;
          if ( programUnit != null ) programUnit.setParent(this);
          nodeListOptional = n1;
          if ( nodeListOptional != null ) nodeListOptional.setParent(this);
          nodeOptional = n2;
          if ( nodeOptional != null ) nodeOptional.setParent(this);
          nodeToken = n3;
          if ( nodeToken != null ) nodeToken.setParent(this);
       }
     
       public CompilationUnit(ProgramUnit n0, NodeListOptional n1, NodeOptional n2) {
          programUnit = n0;
          if ( programUnit != null ) programUnit.setParent(this);
          nodeListOptional = n1;
          if ( nodeListOptional != null ) nodeListOptional.setParent(this);
          nodeOptional = n2;
          if ( nodeOptional != null ) nodeOptional.setParent(this);
          nodeToken = new NodeToken("");
          if ( nodeToken != null ) nodeToken.setParent(this);
       }
     
       public void accept(visitor.Visitor v) {
          v.visit(this);
       }
       public <R,A> R accept(visitor.GJVisitor<R,A> v, A argu) {
          return v.visit(this,argu);
       }
       public <R> R accept(visitor.GJNoArguVisitor<R> v) {
          return v.visit(this);
       }
       public <A> void accept(visitor.GJVoidVisitor<A> v, A argu) {
          v.visit(this,argu);
       }
       public void setParent(Node n) { parent = n; }
       public Node getParent()       { return parent; }
    }
    J'espère que cela peut t'aider.

  6. #46
    Invité
    Invité(e)
    Par défaut
    tigroo31, relis mon post du dessus, tu fais à l'envers...

  7. #47
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    Vous allez rire : je suis vraiment un boulet
    Je lancais javacc sur cobol.jj (l'original) au lieu du nouveau jtb.cobol.jj généré par jtb. Ta remarque George7 m'a fait enfin faire tilt sur le rôle de jdt : ilchange le fichier .jj à sa sauce !
    Vous pouvez me jeter des cailloux
    Allez je me lance dans l'expérience pour de bon. Jerem285 n'hésite pas à demander si tu bloques.
    Et encore merci George7!

  8. #48
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Je bloque au bout du bout ( mon application s'exécute sans erreur, mais elle ne fais absolument rien (il me recopi le code à l'identique, juste en me sortant des erreurs de syntaxe quand il y en a ).

  9. #49
    Invité
    Invité(e)
    Par défaut
    @Tigroo31 de rien...
    @Jerem285: tu as fais ton visiteur qui t'affiche ce que tu as envie ?

  10. #50
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Mon visiteur me raffiche le même code à l'espace près. Je pense que il faut d'abord régler le problème de la génération d'ast avant de m'attaquer au correction syntaxique (je pense passer par un préprosseur).
    Une idée pour mon visiteur?

  11. #51
    Invité
    Invité(e)
    Par défaut
    Mais ton AST est construit par le parser pour vérifier la syntaxe. Ton visiteur parcourt simplement cet arbre en théorie. Je ne sais pas ce que tu veux en faire moi de cet AST ?

  12. #52
    Invité
    Invité(e)
    Par défaut
    Retourne faire un tour sur la page officielle de JTB, il y a vraiment des infos très intéressantes sur la visiteur et tout : http://compilers.cs.ucla.edu/jtb/jtb-2003/tutorial.html

  13. #53
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    Perso j'ai mit au point le préprocesseur (super pratique : j'ai fait un préprocesseur pour OpenCobol et utilise celui dispo pour MicroFocus).
    Et là j'en suis exactement au même point que Jerem285 :comment faire un Visitor Perso?
    Par exemple sur ce fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
           Identification division.
          *>=======================
           Program-id. EXAMPLE is initial.
     
          *>**************************************************************
          *> An example COBOL program that displays a list of squares.
          *> @author Bernard Pinon
          *>**************************************************************
     
           Environment division.
          *>====================
     
           Data division.
          *>=============
     
           Working-storage section.
          *>-----------------------
           01 banner.
               02 filler pic X(20) value "Hello world version ".
               02 version-major pic 9 value 1.
               02 filler pic X value ".".
               02 version-minor pic 9 value zero.
     
           01 bye-bye.
                02 filler pic X(7) value "Bye-bye".
     
           77 i pic S9(4) comp value zero.
           77 j pic S9(4) comp value zero.
     
           77 end-of-treatment-flag pic 9 value zero.
                88 end-of-treatment value 1.
     
           Procedure division.
          *>==================
     
           Main section.
          *>------------
               perform init
               perform treatment until end-of-treatment
               perform wrapup
               exit program.
     
           Init section.
          *>-------------
          *>   open files, take coffee, shower...
               display banner.
     
           Treatment section.
          *>------------------
          *>    ... do something useful here, then ...
               add 1 to i
               if i < 10 then
                   call "MySquare" using by content i, by reference j
                   display "Value of i is ", i, " square is ", j
               else
                   set end-of-treatment to true
               end-if.
     
           Wrapup section.
          *>--------------
          *>   close files, clean up, brush teeth...
               display bye-bye.
          *>   and eventually ...
               stop run.
     
          *>**************************************************************
          *> SUBPROGRAM
          *>**************************************************************
     
           Identification division.
          *>=======================
           Program-id. MySquare.
     
           Data division.
          *>=============
     
           Linkage section.
          *>---------------
           77 n pic S9(4) comp.
           77 result pic S9(4) comp.
     
           Procedure division using n, result.
          *>==================================
               compute 
                 result = n * n 
               end-compute
               exit program.
     
           End program MySquare.
           End program EXAMPLE.
    Je souhaite avoir en gros en vrac:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Program-id. EXAMPLE is initial.
    Procedure division.
    Program-id. MySquare.
    Procedure division using n, result.
    L'idée sera de lister les noms de programme (EXAMPLE et MySquare) et leur arguments (rien et n,result).
    Mais je rame dans la doc pour l'instant...

  14. #54
    Invité
    Invité(e)
    Par défaut
    Ben il faut bien connaitre le design pattern des visiteurs déjà. Renseigne toi sur ce pattern, tu verras.
    En gros, tu hérites de l'interface visiteur donnée par javaCC, et tu implémentes les méthodes de l'interface qui sont appelées pour le parcours de l'arbre. Bref il faut connaitre le principe du visiteur avant tout.

  15. #55
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    Alors c'est parti...J'ai mon interface Visitor, et quelques exemples :
    I Visitor->C DepthFirstVisitor-> C TreeDumper et TreeFormatter.
    Et tu t'accroches au wagon Jerem285? Tu suis? Essaye de créer également ta classe implémentant l'interface Visitor (ou surchargeant DepthFirstVisitor qui , à mes yeux, devrait être abstraite )

  16. #56
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Non je ne suis pas trop enfet.
    Est ce que tu pourrais me montrer un exemple concrai de visitor pour générer un ast?

  17. #57
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 7
    Par défaut
    Ton JTB a du te générer les classes dont je parle, dans le répertoire visitor. Ton Main.java appelle aujourd'hui TreeDumper, qui est un Visitor. Il faudra qu'il appelle ton propre Visitor (PersoDumper par exemple).

  18. #58
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 26
    Par défaut
    Ok mais je mais quoi dans mon visitor pour que générer mon ast?

  19. #59
    Invité
    Invité(e)
    Par défaut
    Jerem: un visiteur NE CREE PAS d'AST, il le parcourt. Ton AST existe déjà c'est le parser qui le génère. Lis mes réponses s'il te plait.
    Ton visiteur va visiter ton AST (d'où son nom) et c'est à toi de dire ce qu'il va faire. Par exemple, si il visite un noeud de type condition, représenté admettons par la classe ConditionNode, dans la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void visit(ConditionNode node) {
        // actions à exécuter pour se type de noeud
    }
    de ton visiteur du mettras ce que tu veux faire quand tu rencontres ce genre de noeud.
    Bref tu as l'air de ne pas connaitre le principe du visiteur (c'est pas grave), mais tu sembles ne pas tenir compte de mes remarques quant à la documentation sur le sujet que tu devrais lire. C'est un principe très utilisé, à connaitre quand on est dans la branche. Penche toi dessus un tout petit peu et tu verras ça te paraitra limpide. De même renseigne toi sur les parser et AST, pour comprendre ce que tu fais, je ne peux (veux ?) pas te donner une solution toute faite car ça ne servirait à rien. Je veux bien t'aider mais je ne sais pas ce que tu veux faire avec ton AST.
    Prenons un exemple :
    Le compilo pour java par exemple, possède un parser reconnaissant la grammaire de java. Il construit un AST à partir d'un fichier source que tu lui donnes en entrée. Ensuite un visiteur va parcourir cet arbre et effectuer des opérations telles que par exemple :
    • vérification du typage.
    • génération du bytecode

    Bref le visiteur utilise l'AST construit par le parser pour faire les actions que tu lui as dit de faire.
    J'espère t'avoir éclairé sur le sujet et si tu as une question concrète après avoir essayer quelque chose, tu peux redemander, mais là je ne sais même pas ce que tu veux faire avec ton AST (tu veux compiler tu cobol ?)
    Bon courage

Discussions similaires

  1. Cobol call Java sous MVS
    Par ego dans le forum Cobol
    Réponses: 4
    Dernier message: 16/08/2010, 19h03
  2. Cobol devant Java en terme de demande :)
    Par lepinekong dans le forum Actualités
    Réponses: 8
    Dernier message: 24/01/2010, 21h14
  3. de cobol vers java
    Par CobolProgrammator dans le forum z/OS
    Réponses: 4
    Dernier message: 18/02/2009, 16h45
  4. Réponses: 0
    Dernier message: 22/07/2008, 11h30

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