Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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