%{ (* 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_MACHINE %token UL_ACCOUV UL_ACCFER %token UL_FROM UL_TO UL_ON %token UL_STARTS UL_ENDS %token UL_REGION %token UL_STATE %token UL_EVENT %token UL_PT /* Defini le type des donnees associees a l'unite lexicale */ %token UL_IDENT /* Unite lexicale particuliere qui represente la fin du fichier */ %token UL_FIN /* Type renvoye pour le nom terminal document */ %type machine /* Le non terminal document est l'axiome */ %start machine %% /* Regles de productions */ machine : UL_MACHINE UL_IDENT UL_ACCOUV loop_composant UL_ACCFER UL_FIN { (print_endline "machine : MACHINE IDENT ACCOUV loop_composant ACCFER FIN") } composant : UL_EVENT UL_IDENT { (print_endline "composant : EVENT IDENT") } | transition { (print_endline "composant : transition") } | region { (print_endline "composant : region") } transition : UL_FROM nom_qualifie UL_TO nom_qualifie UL_ON UL_IDENT { (print_endline "transition : FROM nom_qualifie TO nom_qualifie ON IDENT") } nom_qualifie : UL_IDENT loop_nom_qualfie { (print_endline "nom_qualifie : IDENT loop_nom_qualifie") } etat : UL_STATE UL_IDENT option_starts option_ends option_regions { (print_endline "etat : STATE IDENT option_starts option_ends option_regions") } region : UL_REGION UL_IDENT UL_ACCOUV etat loop_etat UL_ACCFER { (print_endline "region : REGION IDENT ACCOUV etat loop_etat ACCFER") } loop_composant : /* Lambda, mot vide */ { (print_endline "loop_composant : /* Lambda, mot vide */") } | composant loop_composant { (print_endline "loop_composant : composant loop_composant") } loop_nom_qualfie : /* Lambda, mot vide */ { (print_endline "loop_nom_qualifie : /* Lambda, mot vide */") } | UL_PT UL_IDENT loop_nom_qualfie { (print_endline "loop_nom_qualifie : PT IDENT loop_nom_qualifie") } loop_etat : /* Lambda, mot vide */ { (print_endline "loop_etat : /* Lambda, mot vide */") } | etat loop_etat { (print_endline "loop_etat : etat loop_etat") } loop_region : /* Lambda, mot vide */ { (print_endline "loop_region : /* Lambda, mot vide */") } | region loop_region { (print_endline "loop_region : region loop_region") } option_starts : /* Lambda, mot vide */ { (print_endline "option_starts : /* Lambda, mot vide */") } | UL_STARTS { (print_endline "option_starts : STARTS") } option_ends : /* Lambda, mot vide */ { (print_endline "option_ends : /* Lambda, mot vide */") } | UL_ENDS { (print_endline "option_ends : ENDS") } option_regions : /* Lambda, mot vide */ { (print_endline "option_regions : /* Lambda, mot vide */") } | UL_ACCOUV region loop_region UL_ACCFER { (print_endline "option_regions : ACCOUV region loop_region ACCFER") } %%