#1 Le 14/12/2010, à 17:09
- Lyaskator
OCaml - pattern matching - syntax error [résolu]
edit : c'est bon, je me suis rendu compte de mes erreurs, le code correct est :
let val_argv = ref false;;
let rec argv_rec ite_argv =
match ite_argv with
| 0 when !val_argv -> true
| 0 when not !val_argv -> false
| _ -> match Sys.argv.(ite_argv).[0] with
| '"' when Sys.argv.(ite_argv).[(String.length Sys.argv.(ite_argv)) -1] = '"' -> if !val_argv then false else begin val_argv := true; argv_rec (ite_argv - 1); end
| _ -> argv_rec (ite_argv - 1)
;;
let argv_val = (String.sub Sys.argv.(1) 1 ((String.length Sys.argv.(1)) - 2))
Bonjour,
voilà j'ai voulu faire une fonction récursive dont le but serait d'analyser un à un les arguments envoyés au programme. L'un de ces arguments doit obligatoirement être entouré de " ".
Le code :
[s]let val_argv = ref false;
let rec argv_rec ite_argv =
match ite_argv with
| 0 when val_argv -> true
| 0 when ! val_argv -> false
| _ -> match Sys.argv.(ite_argv).[0] with
| '"' when Sys.argv.(ite_argv).[(String.length Sys.argv.(ite_argv)) -1] = '"' -> match val_argv with
| true -> false
| false -> val_argv := true; argv_rec (ite_argv - 1)
| _ -> argv_rec (ite_argv - 1)
;;
let argv_val = (String.sub Sys.argv.(1) 1 ((String.length Sys.argv.(1)) - 2))
[/s]
Et j'ai ceci à la compilation :
File "main.ml", line 13, characters 4-6:
Error: Syntax error
(donc apparemment c'est le ;; qui pose problème)
Est-ce qu'un pro de l'OCaml pourrait m'expliquer ce qui cloche ?
Ça fait un certain temps que je cherche, je suis frustré parce que j'ai l'impression que c'est une erreur toute bête.
Dernière modification par Lyaskator (Le 14/12/2010, à 19:20)
Hors ligne