Práctica 1

Transcripción

Práctica 1
Práctica 1
Una máquina de café simple sirve fundamentalmente café, aunque también ofrece
como productos agua caliente (para aquellos que quieren hacerse una infusión), y
cucharillas de plástico. La máquina acepta un conjunto de órdenes en modo texto para
funcionar, las cuales recibe en un archivo. Cada vez que recibe una orden correcta,
sirve el producto y envía un e-mail al peticionario para informarle de que su petición
está lista, y continúa procesando la siguiente orden. Cuando una orden es incorrecta,
emite un mensaje de error y pasa a la siguiente sin notificar al usuario.
Las órdenes que admite son las siguientes:
- CAFE
- CUCHARA
- AGUA
- OK (indica que debe procederse a servir lo solicitado)
- NO (corrige la palabra anterior)
Teniendo en cuenta que las direcciones de e-mail siguen la convención habitual (una o
más palabras –sucesiones de letras y dígitos que comienzan siempre por letra–
separadas por puntos, seguidas de un símbolo @ y después dos o más palabras
separadas por punto), serán órdenes correctas las siguientes:
CAFE [email protected] OK
CUCHARA [email protected] OK
AGUA [email protected] OK
El café puede ser de 3 tipos: normal, con LECHE y CAPUCHINO. Para obtener cada tipo
es necesario hacer lo siguiente:
CAFE
--> Café normal
CAFE CAPUCHINO
--> Café capuchino
CAFE LECHE
--> Café con leche
El modificador NO sólo puede usarse una vez en una orden y sólo se aplica a los tipos
de café, por lo que aplicado a cualquier otro elemento sería un error, así como su
aparición duplicada. Las siguientes órdenes son ejemplos de modificación correcta:
CAFE LECHE NO CAPUCHINO [email protected] OK
--> Sirve un café capuchino a Daniel Rodriguez.
CAFE LECHE NO [email protected] OK
--> Sirve un café normal a Salvador Sánchez.
Por otra parte, las siguientes órdenes son incorrectas:
CAFE NO CUCHARA [email protected] OK
--> Error: NO sólo puede aplicarse a tipos de café
CAFE LECHE NO CAPUCHINO NO LECHE [email protected] OK
Î
Error: NO sólo puede aparecer una vez
CAFE CAPUCHINO NO AGUA [email protected] OK
Î
Error: AGUA no es un tipo de café (esta orden equivale a CAFE AGUA …)
CAFE CAPUCHINO OK
Î
Error: Falta el email del peticionario
CAFE CAPUCHINO [email protected] OK
--> Error: El formato de la dirección de e-mail no es correcto
Se pide implementar un analizador léxico que reconozca órdenes válidas para la
máquina de café descrita y que emita mensajes que simulen el envío del e-mail al
peticionario o el error producido de acuerdo con la orden solicitada.
NOTA: Se proporciona el archivo prueba.txt con los siguientes datos de prueba…
Entradas válidas:
CAFE [email protected] OK
CAFE CAPUCHINO [email protected] OK
CAFE LECHE [email protected] OK
AGUA [email protected] OK
CUCHARA [email protected] OK
CAFE LECHE NO CAPUCHINO [email protected] OK
Entradas no válidas:
CAFE CUCHARA [email protected] OK
CAFE NO [email protected] OK
CAFE LECHE NO NO AGUA [email protected] OK
CAFE LECHE CAPUCHINO [email protected] OK
CAFE LECHE OK
CAFE [email protected]
AGUA

Documentos relacionados