26 lines
758 B
OCaml
26 lines
758 B
OCaml
open Tokens
|
|
open Scanner
|
|
open Parser
|
|
|
|
(* main : unit -> unit *)
|
|
(* Analyse le contenu d'un fichier passé en paramètre ou l'entrée standard si aucun fichier n'est donné *)
|
|
(* Affiche OK si l'analyse syntaxique c'est bien passée et KO sinon *)
|
|
let main () =
|
|
let cin =
|
|
if Array.length Sys.argv > 1 then
|
|
open_in Sys.argv.(1)
|
|
else
|
|
stdin
|
|
in
|
|
let lexbuf = Lexing.from_channel cin in
|
|
let tokens = (scanner lexbuf) in
|
|
(print_endline ("Résultat de l'analyse lexicale :" ^ (string_of_stream tokens)));
|
|
(print_endline "Analyse syntaxique par descente récursive, règles appliquées :");
|
|
(match (parseR tokens)
|
|
with
|
|
| Success [UL_FIN] -> print_endline "Succés"
|
|
| _ -> print_endline "Echec")
|
|
;;
|
|
|
|
main();;
|