Salut à tous.
J'ai posté il y a quelques temps car ocamllex ne fonctionnait pas avec les accents.
InOcamlWeTrust m'a certifié que si et effectivement, j'ai pu le lire sur le site mais ce n'est pas très accessible.
http://www.developpez.net/forums/sho...d.php?t=465538
Bref pour ceux qui cherchent à faire fonctionner les accents en 8859-1 (ou -15), il faut les coder en hexa ou decimal en mettant '\xHH' pour l'hexa et '\ddd' pour les décimals. http://www.table-ascii.com/ vous renseignera sur les codes.
Voilà mais ceci ne résout pas tellement mon problème. Le fichier à parser est généré en utf-8 et j'aimerais qu'il en reste ainsi plutôt que de le convertir.
J'en suis au stade où j'essaie de compiler mon code avec ulex et ocamlyacc mais en dépouillant les expressions rationnelles (j'y reviendrai plus tard).
J'ai lu que plusieurs personnes avaient eu le même souci que moi.
Voici le message d'erreur à la compilation:
Selon Alain Frisch (créateur d'Ulex), c'est possible de combiner ulex et ocamlyacc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 This expression has type Ulexing.lexbuf -> Parser.token but is here used with type Lexing.lexbuf -> Parser.token
http://caml.inria.fr/pub/ml-archives...60bf59.en.html
Mais mon fichier yacc a l'air de correspondre.
Est-ce que vous pourriez me dire où se situe mon erreur ?
Dans le fichier main.ml :
Fichier parser.mly :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 (* Ouverture du fichier source en lecture *) let f = open_in !ifile in (* Création d'un tampon d'analyse lexicale *) let buf = Ulexing.from_utf8_channel f in let l_files = Parser.main Lexer.nexttoken buf in
J'avoue que je suis complètement largué là et un coup de main serait le bienvenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /* Point d'entrée de la grammaire */ %start main /* Type des valeurs retournées par l'analyseur syntaxique */ %type <Ast.fichiers> main %% main: | EOF { [] } | fichiers EOF {List.rev $1} ; ...
Merci d'avance.
Dest.
Partager