Parsing de fichier? - Java - Programmation
Marsh Posté le 21-09-2006 à 05:02:09
( Lisp )
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?