[ANTLR] connaitre la position des blocks dans le parser

connaitre la position des blocks dans le parser [ANTLR] - Divers - Programmation

Marsh Posté le 17-05-2005 à 13:40:51    

Bonjour,
 
Je commence a me mettre à antlr pour parser un fichier source (en C). Pour gerer au mieux les messages d'erreurs que je ressort a l'utilisateur je souhaite connaitre la position du debut et de la fin du block identifié par une rule.  
 
Par exemple :
 

Code :
  1. for (int i=0; i<12; i++) {
  2.   a=i+1;
  3. }


 
et ma rule antlr qui identifie mon block for (c'est un ex, c'est pzs tout a fait comme ca que je fais, mais bon)

Code :
  1. for:
  2.    {printPos();} "for" LPAREN INSTRUTION SEMI TEST SEMI INSTRUCTION RPAREN BLOCK {printPos();}
  3.    ;


je souhaiterais pourvoir connaitre (dans une action {printPos();} par ex) la position du debut et de la fin par  ligne:car -> ligne:car
 
Est-ce Possible ?
 
 

Reply

Marsh Posté le 17-05-2005 à 13:40:51   

Reply

Marsh Posté le 18-05-2005 à 10:59:22    

Personne ne s'y connait alors ?

Reply

Marsh Posté le 18-05-2005 à 12:57:06    

Tu pourrais eventuellement creer des tokens temporaires for_debut et for_fin (genre f:for : blabla {for_debut = #f} )et obtenir leur ligne et leur colonne respective dans ton TreeWalker avec les methodes getLine() et getColumn() de la classe token (moi je me base sur la version Java) ...


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed