Parsing de fichier? - Java - Programmation
Marsh Posté le 21-09-2006 à 05:02:09
( Lisp ![[:cupra] [:cupra]](https://forum-images.hardware.fr/images/perso/cupra.gif) )
 ) 
 
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...
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
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)
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, ...
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
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
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 : 
 | 
 
 
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...
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  
 
 
http://www.dmi.usherb.ca/~kabanza/cours/ift451/ 
 
edit: merde la matière sur javacc est présentement pas disponible
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
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?