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