Parsing de fichier?

Parsing de fichier? - Java - Programmation

Marsh Posté le 21-09-2006 à 01:06:23    

j'ai un fichier qui ressemble à ceci
 


(init s1)
(goal s7)
(transitions
 ((s2 s3
  ((s4 1 foo)
   (s5 8 toto)
        ))
 ((s6 s8
  ((s7 4 tata)
   (s9 3 titi)
        ))
)


 
j'ai commencé à faire le parsing en lisant tout le fichier et le placant dans une String. Ensuite, j'utilise des regex pour me créer un objet qui contient l'init, le goal, un hashmap de transitions, ...
 
y'a t-il une meilleure méthode que les regex?

Reply

Marsh Posté le 21-09-2006 à 01:06:23   

Reply

Marsh Posté le 21-09-2006 à 05:02:09    

( Lisp [:cupra] )
 
si vraiment t'es sûr du format de tes lignes ca peut faire l'affaire, si tu risque de faire face à un peu de variété ou que t'as simplement envie de faire quelque chose de propre, un classique couple d'analyseur lexical/syntaxique me semble pas mal. Les deux était ultrasimplistes pour un machin pareil ;)
 
Sinon ca m'etonnerait pas que ca existe pas déja en tout fait ou fortement prémaché ton truc...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 21-09-2006 à 13:55:14    

ouf j'ai eu un cours d'analyseur lexical et syntaxique la dernière session et j'ai pas vraiment envi de m'embarquer dans un truc pareil pour le peu que j'ai à faire
 
c'est un cours d'AI, je dois faire un algo A*
Le but du tp c'est pas de faire l'algo de parsing de fichier
 
jcrois que jvais continuer avec les regex alors, sauf si quelqu'un autre me suggere une méthode rapide et plus efficace

Reply

Marsh Posté le 21-09-2006 à 13:58:35    

je pense qu'avec les regex tu vas en chier ... ce serait certainement plus simple de te faire un lexer et un parser (meme a la main, ca a pas trop l'air compliquer la)

Reply

Marsh Posté le 21-09-2006 à 14:14:43    

souk a écrit :

je pense qu'avec les regex tu vas en chier ... ce serait certainement plus simple de te faire un lexer et un parser (meme a la main, ca a pas trop l'air compliquer la)


 
ok... jpeux bien y jetter un oeil
vous avez des conseils/tuto pour faire ca en java?
 
on utilisait une vieille suite d'outils dans mon cours (cocktail) avec des trucs comme rex, ell, ...

Reply

Marsh Posté le 21-09-2006 à 14:24:13    

j'aime bien le couple jflex+cup
sinon javacc aussi, un peu plus simple je pense et largement suffisant pour ton cas

Reply

Marsh Posté le 21-09-2006 à 14:33:01    

jsuis en train de regarder javacc, ca ressemble beaucoup à ce que j'ai déjà fait par le passé
 
jvais commencé par créer mes tokens et je verrai par la suite si jsuis capable de générer quelque chose

Reply

Marsh Posté le 21-09-2006 à 15:12:45    

(init <etat> )
(goal <etat> )
(transitions <listeDeTransitions> )
 
òu init, goal et transitions sont des mots clés, indiquant respectivement l’état
initial, le but et les transitions; <etat> est un symbole alphanumérique,
commençant par une lettre (par exemple « s1 ») et <transitions> est une
séquence de doublets (<etat> <h-value> <listeSuccesseurs> ), avec <h-value>
un nombre réel (la valeur h de l’état) et <listeSuccesseurs> une séquence de
doublets (<etat> <cout> <action> ) òu <cout> est un nombre réel (le coût de la
transition) et <action> est un symbole alphanumérique commençant par une
lettre (le nom de la transition).
 
 
donc pour commencé, je me suis déclarer les tokens suivant

Code :
  1. TOKEN :
  2. {
  3.   < ETAT: ["a"-"z","A"-"Z"] ( ["a"-"z","A"-"Z","0"-"9"] )* >
  4. | < NUM: ( ["0"-"9"] )+ >
  5. | < REAL: NUM ( "." ( NUM )+ )? >
  6. }


 
ensuite j'accroche un peu, jdois commencer par avoir mon programme principal (dans mon cas il se nommera Problem vu que ce que je lis, c'est un problème à résoudre avec un algo AStar)
 
jme base sur l'exemple NL_Xlator dans le dossier SimpleExample venant avec javacc...

Reply

Marsh Posté le 21-09-2006 à 15:18:52    

nouvelle source de doc pour moi
le prof qui donne le cours cette session ci le fais avec jflex, javacc, cup :P
 
http://www.dmi.usherb.ca/~kabanza/cours/ift451/
 
edit: merde la matière sur javacc est présentement pas disponible


Message édité par burgergold le 21-09-2006 à 15:22:45
Reply

Marsh Posté le 21-09-2006 à 16:01:30    

de toute facon jflex et cup rulez [:dawao]

Reply

Marsh Posté le 21-09-2006 à 16:01:30   

Reply

Marsh Posté le 21-09-2006 à 19:05:36    

ouarf, commence à faire pas mal de temps que je passe sur ce parsing
 
commencé par la regex, ensuite entamé avec javacc mais jsuis encore loin d'un résultat final
 
jcrois que jvais laisser faire pour jflex et cup, et p-e meme pour javacc, mais jtrouve ca quand même interessant de savoir que ca l'existe pour des situations futur ou j'aurai plus de temps

Reply

Sujets relatifs:

Leave a Replay

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