Bonsoir,
Je suis actuellement en train de me frotter au lexing/parsing en Ocaml à l'aide de Ocamllex et Ocamlyacc. Mon but est de faire l'analyse syntaxique d'une expression et de produire un arbre binaire.
Voici le type définit dans le programme principal :
Et voici un morceau de la définition de mon parseur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 type arbre = Feuille of string | Branche of arbre * string * arbre;;
[...]
%start main /* the entry point */
%type <arbre> main
%%
main:
expr EOL { $1 }
;
expr:
STR { Feuille $1 }
| LPAREN expr RPAREN { $2 }
| expr IMPLI expr { Branche $1 "IMPLI" $3 }
| expr ET expr { Branche $1 "ET" $3 }
[...]
Mon but est donc de construire un arbre représentant l'expression, au fur-et-à-mesure que celle-ci est parsée. Quand je compile, j'ai cette erreur :
Il semble chercher un constructeur de mon type 'arbre' pour initialiser l'arbre produit par le parseur. Je ne sais pas comment définit un tel constructeur, et ne sait même pas si ce que j'essaye de faire est possible ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 File "parser.mli", line 13, characters 48-53: Error: Unbound type constructor arbre
Si quelqu'un est en mesure de m'aider, qu'il n'hésite surtout pas
Partager