Besion d'aide pour un parser.

Besion d'aide pour un parser. - Algo - Programmation

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. :ange:  
 
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 !
Reply

Marsh Posté le 16-12-2004 à 16:31:10   

Reply

Marsh Posté le 16-12-2004 à 16:36:03    

Tu utilises quels outils (c/lex/lex+yacc)?

Reply

Marsh Posté le 16-12-2004 à 16:37:00    

lex+yacc


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

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.

Reply

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 !  
 
 
 


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

Marsh Posté le 19-12-2004 à 22:40:05    

C'est bizarre mais je ne reconnais pas là la syntaxe de Lex ???

Reply

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 ?

Reply

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 :)


---------------
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