%{ (* Partie recopiee dans le fichier CaML genere. *) (* Ouverture de modules exploites dans les actions *) (* Declarations de types, de constantes, de fonctions, d'exceptions exploites dans les actions *) %} /* Declaration des unites lexicales et de leur type si une valeur particuliere leur est associee */ %token UL_MODEL %token UL_ACCOUV UL_ACCFER %token UL_SYSTEM %token UL_BLOCK %token UL_FLOW UL_FROM UL_TO %token UL_IN UL_OUT %token UL_INT UL_FLOAT UL_BOOLEAN %token UL_PAROUV UL_PARFER %token UL_CROOUV UL_CROFER %token UL_PTV UL_VIRG UL_PT2 UL_PT /* Defini le type des donnees associees a l'unite lexicale */ %token UL_IDENT %token UL_PORT %token UL_ENTIER /* Unite lexicale particuliere qui represente la fin du fichier */ %token UL_FIN /* Type renvoye pour le nom terminal document */ %type modele /* Le non terminal document est l'axiome */ %start modele %% /* Regles de productions */ modele : UL_MODEL UL_IDENT UL_ACCOUV loop_element UL_ACCFER UL_FIN { (print_endline "modele : UL_MODEL IDENT { loop_element } UL_FIN ") } element : bloc { (print_endline "element : bloc") } | systeme { (print_endline "element : systeme") } | flot { (print_endline "element : flot") } loop_element : /* Lambda */ { (print_endline "loop_element : /* Lambda */") } | element loop_element { (print_endline "loop_element : element loop_element") } bloc : UL_BLOCK UL_IDENT parametres UL_PTV { (print_endline "bloc : UL_BLOCK UL_IDENT parametres UL_PTV") } systeme : UL_SYSTEM UL_IDENT parametres UL_ACCOUV loop_element UL_ACCFER { (print_endline "systeme : UL_SYSTEM UL_IDENT parametres UL_ACCOUV loop_element UL_ACCFER") } parametres : UL_PAROUV port loop_port UL_PARFER { (print_endline "parametres : UL_PAROUV port loop_port UL_PARFER") } loop_port : /* Lambda */ { (print_endline "loop_port : /* Lambda */") } | UL_VIRG port loop_port { (print_endline "loop_port : UL_VIRG port loop_port") } port : UL_PORT UL_PT2 in_or_out type_ { (print_endline "port : UL_PORT UL_PT2 in_or_out type_") } in_or_out : UL_IN { (print_endline "in_or_out : UL_IN") } | UL_OUT { (print_endline "in_or_out : UL_OUT") } type_ : select_type option_entiers { (print_endline "type_ : select_type option_entiers") } select_type : UL_INT { (print_endline "select_type : UL_INT") } | UL_FLOAT { (print_endline "select_type : UL_FLOAT") } | UL_BOOLEAN { (print_endline "select_type : UL_BOOLEAN") } option_entiers : /* Lambda */ { (print_endline "option_entiers : /* Lambda */") } | UL_CROOUV UL_ENTIER loop_entier UL_CROFER { (print_endline "option_entiers : UL_CROOUV UL_ENTIER loop_entier UL_CROFER") } loop_entier : /* Lambda */ { (print_endline "loop_entier : /* Lambda */") } | UL_VIRG UL_ENTIER loop_entier { (print_endline "loop_entier : UL_VIRG UL_ENTIER loop_entier") } flot : UL_FLOW UL_PORT UL_FROM option_ident UL_PORT UL_TO option_loop_ident_port UL_PTV { (print_endline "flot : UL_FLOW UL_PORT UL_FROM option_ident UL_PORT UL_TO option_loop_ident_port UL_PTV") } option_ident : /* Lambda */ { (print_endline "option_ident : /* Lambda */") } | UL_IDENT UL_PT { (print_endline "option_ident : UL_IDENT UL_PT") } ident_port : option_ident UL_PORT { (print_endline "ident_port : option_ident UL_PORT") } loop_ident_port : /* Lambda */ { (print_endline "loop_ident_port : /* Lambda */") } | UL_VIRG ident_port loop_ident_port { (print_endline "loop_ident_port : UL_IDENT UL_PT") } option_loop_ident_port : /* Lambda */ { (print_endline "option_loop_ident_port : /* Lambda */") } | ident_port loop_ident_port { (print_endline "option_loop_ident_port : ident_port loop_ident_port") } %%