TP-automates/BE_2020_2021/ascendant/MainMachine.ml
2023-06-21 19:58:18 +02:00

42 lines
1.3 KiB
OCaml
Executable file

open Parser
(* Fonction d'affichage des unités lexicales et des données qu'elles contiennent *)
let printToken t =
(print_endline
(match t with
| UL_IDENT (texte) -> texte
| UL_ACCOUV -> "{"
| UL_ACCFER -> "}"
| UL_PT -> "."
| UL_MACHINE -> "machine"
| UL_TO -> "to"
| UL_ON -> "on"
| UL_EVENT -> "event"
| UL_FROM -> "from"
| UL_REGION -> "region"
| UL_ENDS -> "ends"
| UL_STARTS -> "starts"
| UL_STATE -> "state"
| UL_FIN -> "EOF"
));;
(* Analyse lexicale du fichier passé en paramètre de la ligne de commande *)
if (Array.length Sys.argv > 1)
then
let lexbuf = (Lexing.from_channel (open_in Sys.argv.(1))) in
let token = ref (Lexer.lexer lexbuf) in
while ((!token) != UL_FIN) do
(printToken (!token));
(token := (Lexer.lexer lexbuf))
done
else
(print_endline "MainJSON fichier");;
(* Analyse lexicale, syntaxique et sémantique du fichier passé en paramètre de la ligne de commande *)
if (Array.length Sys.argv > 1)
then
let lexbuf = (Lexing.from_channel (open_in Sys.argv.(1))) in
(Parser.machine Lexer.lexer lexbuf)
else
(print_endline "MainJSON fichier");;