Este fichero se corresponde con el scanner necesario para el reconocimiento de órdenes (que pueden incluir expresiones lógicas como parámetros). Dentro del mismo se definen las expresiones regulares a reconocer. Dentro de estos patrones a reconocer se encuentran:
Paréntesis, comas, AND's, flechas, retornos de carro, espacios y tabulaciones.
Para reconocer órdenes de salir, introducir sentencias, ...
Cualquier secuencia de letras se interpretará como un nombre. Para la aplicación se considera que los nombres deben ser en letras mayúsculas o minúsculas, pero no ambas.
Los patrones que se reconocen se pasarán al parser en forma de tokens.
Si se introduce un carácter no permitido, entonces se activará un error y aparece en consola el mensaje oportuno.
A continuación se muestra el código correspondiente a este fichero:
{
#open "parord";;
exception Error_lexico;;
}
rule token_ord = parse
`(` {PI}
|`)` {PD}
|`,` {COMA}
|"->" {IMPLICA}
|"empty" {EMPTY}
|"save" {SAVE}
|"in" {IN}
|"drop" {DROP}
|"proof" {PROOF}
|"list" {LIST}
|"exit" {SALIR}
|`^` {AND}
|[`A`-`Z`]+ {NOMBREMAY (get_lexeme (lexbuf))}
|[`a`-`z`]+ {NOMBREMIN (get_lexeme (lexbuf))}
|[` ` `\t`]+ {token_ord lexbuf}
|[`\n`] {EOL}
|_ {print_string "Error in order line";
print_newline();
print_string "This is the mistake : ";
print_string (get_lexeme (lexbuf));print_newline();
flush std_out;raise Error_lexico
}
;;