Besion d'aide pour un parser. - Algo - Programmation
Marsh Posté le 16-12-2004 à 16:37:00
lex+yacc
Marsh Posté le 16-12-2004 à 16:54:21
Je verrais bien une production lex qui rend les nombres, les tokens Basic, les identifiants et les retours chariots.
Et ton yacc, ça serait un bête:
ligne-de-code:
nombre instructions retour-chariot
Et comme tu le dis, tu stocke tout ce biniou dans une structure associative type map ou hash-map où un numero de ligne te donne la ligne de code qui va bien.
Marsh Posté le 17-12-2004 à 00:00:12
Ja galere a trouver l'expression reguliere pour les numeros de ligne, enfin pour les tokeniser quoi ...
Je lui donne [line_number (@ #\newline (+ digit) #\space)] et il capte rien
Avec
@ : dans cet ordre
+ : au moins 1 fois
... Fait hiech !
Marsh Posté le 19-12-2004 à 22:40:05
C'est bizarre mais je ne reconnais pas là la syntaxe de Lex ???
Marsh Posté le 19-12-2004 à 23:27:44
comprends rien a ton micmac, ton numero de ligne c'est un entier, donc un [0-9]+ tout bete ?
Marsh Posté le 20-12-2004 à 18:44:49
Ouais c clair je me prenais trop la tete pour rien en fait, c'est resolu depuis 2 jours ... je suis passé au eval
Marsh Posté le 16-12-2004 à 16:31:10
Bon là j'ai un ptit souci de realisation d'un parser.
Le language a interpreté est un espece de BASIC avec des numeros de lignes qui seront enfait les indexes d'un tableau (hash-table ?) dont les elements seront les lignes.
Ceci dans le but de gerer le GOTO ... et peut etre le GOSUB.
Exemple
10 REM "calcul de factorielle avec FOR"
20 INPUT "n=",n
30 LET res = 1
40 FOR i = 1 to n
50 res = res*i
60 NEXT i
70 PRINT "fac=",res
Je pige pas comment faire pour remplir le tableau en parsant le fichier ...
J'ai bien l'impression qu si je tokenize pas les numero de ligne je ne m'en soriré pas, je cherche donc une alternative a la creation d'un type (token) numero de ligne dans le lexer.
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !