44 lines
1.3 KiB
OCaml
44 lines
1.3 KiB
OCaml
|
{
|
||
|
|
||
|
(* Partie recopiée dans le fichier CaML généré. *)
|
||
|
(* Ouverture de modules exploités dans les actions *)
|
||
|
(* Déclarations de types, de constantes, de fonctions, d'exceptions exploités dans les actions *)
|
||
|
|
||
|
open Parser
|
||
|
exception LexicalError
|
||
|
|
||
|
}
|
||
|
|
||
|
(* Déclaration d'expressions régulières exploitées par la suite *)
|
||
|
let chiffre = ['0' - '9']
|
||
|
let minuscule = ['a' - 'z']
|
||
|
let majuscule = ['A' - 'Z']
|
||
|
let alphabet = minuscule | majuscule
|
||
|
let alphanum = alphabet | chiffre | '_'
|
||
|
let commentaire =
|
||
|
(* Commentaire fin de ligne *)
|
||
|
"#" [^'\n']*
|
||
|
|
||
|
rule lexer = parse
|
||
|
| ['\n' '\t' ' ']+ { (lexer lexbuf) }
|
||
|
| commentaire { (lexer lexbuf) }
|
||
|
| "{" { UL_ACCOUV }
|
||
|
| "}" { UL_ACCFER }
|
||
|
| "." { UL_PT }
|
||
|
| "machine" { UL_MACHINE }
|
||
|
| "to" { UL_TO }
|
||
|
| "on" { UL_ON }
|
||
|
| "event" { UL_EVENT }
|
||
|
| "from" { UL_FROM }
|
||
|
| "region" { UL_REGION }
|
||
|
| "ends" { UL_ENDS }
|
||
|
| "starts" { UL_STARTS }
|
||
|
| "state" { UL_STATE }
|
||
|
| eof { UL_FIN }
|
||
|
| alphabet+ as texte { (UL_IDENT texte) }
|
||
|
| _ as texte { (print_string "Erreur lexicale : ");(print_char texte);(print_newline ()); raise LexicalError }
|
||
|
|
||
|
{
|
||
|
|
||
|
}
|