Ejercicio Flex – Bison \(examen de prácticas de Septiembre de 2003\)
días, no periódicamente, se toma la información que ha proporcionado, se guarda en un fichero de texto, y se analiza. El formato con que llega esta información ...
Tipos de valores en Flex y Bison A continuación se detalla un ejemplo de cómo usar Flex y Bison conjuntamente pero asociando valores a los tokens en Flex. Flex puede proporcionar tokens a Bison, y además asociarles un valor: algunos ejemplos típicos son pasarle el token NUMERO_ENTERO asociando a ese token el valor concreto del número leído, o pasarle el token IDENTIFICADOR y asociarle la cadena concreta que corresponde al identificador. Para esto en Flex se usa la variable global yylval, y en Bison la sintaxis $x para acceder a los valores asociados a los tokens. Por defecto yylval es de tipo int. Si sólo queremos pasar valores enteros de Flex a Bison no habrá que declarar nada más, se usará yylval en Flex como si fuera un entero, y en Bison se podrá acceder al valor asociado a cada token utilizando la sintaxis $x de para ese token (los $x se manejarían como variables enteras). Si queremos pasar otros tipos de valores de Flex a Bison, la forma más general es la siguiente: 1. Definir en Bison una unión de los distintos valores posibles. Por ejemplo la siguiente dice que podremos usar enteros y reales: %union { int valInt; float valFloat; } 2. Desde Flex accederemos a los distintos valores de la unión con la sintaxis yylval.nombre: En el ejemplo anterior yylval.valInt sería un entero e yylval.valFloat sería un real. 3. Dentro de Bison habrá que usar las declaraciones de %token para asignar tipos a cada token y las de %type para asignar tipos a los no terminales (al menos a los que se vayan a usar con valores asociados). Hay unas cuantas cosas más que se pueden hacer en Bison, pero no se van a detallar en esta introducción. El siguiente ejemplo debería aclarar cómo se utilizan valores asociados a tokens. El ejemplo también es ilustrativo de cómo se usan los $x para almacenar valores, por ejemplo para acumular las mediciones de temperaturas y luego poder hacer la media.
Ejemplo Flex y Bison Un sensor meteorológico proporciona temperaturas tomadas a distintas horas del día. Cada varios días, no periódicamente, se toma la información que ha proporcionado, se guarda en un fichero de texto, y se analiza. El formato con que llega esta información es el siguiente: horaH valor_temperatura unidades_temperatura horaH valor_temperatura unidades_temperatura ... horaH valor_temperatura unidades_temperatura ... Notas: • Cada línea es una medición de temperatura a una hora concreta. • Hay un número desconocido de mediciones. • El número de mediciones diarias es variable, pero se sabe que el sensor siempre proporciona una medición diaria tomada a las 12 horas. • hora es un entero (que puede tomar valores entre 0 y 23). • valor_temperatura también es un número real (negativo o positivo y siempre con punto decimal). • unidades_temperatura puede tomar dos valores: C (centígrados) y F (farenheit). A continuación se muestra un ejemplo de información de 8 mediciones:
5H 15.0 C 10H 20.25 C 12H 24.52 C 19H 21.0 C 5H 85.5 F 12H 94.2 F 10H 23.5 C 12H 100.2 F
1.1. Escribid un analizador léxico en FLEX para el fichero con la sintaxis dada: Este analizador deberá reconocer los siguientes tokens: Un token para las horas y otro para las temperaturas. Las horas serán un entero seguido de una H (ver el ejemplo de fichero de antes) mientras que las temperaturas serán simplemente un número real. Además se deberán pasar los valores leídos (tanto las horas como las temperaturas) a BISON para su posterior análisis. Un token para cada unidad de temperatura (serán 2 tokens). Ayudas: 1) Para las horas, no hace falta comprobar que las horas están entre las 0 y las 23, si no que basta reconocer un número entero seguido de una H, suponiendo pues que son correctas. 1.2. Escribid un analizador sintáctico en BISON que reconozca una lista de mediciones con la sintaxis dada. Este analizador sintáctico usará el analizador léxico resultante del apartado anterior. También deberá calcular e imprimir por pantalla: El valor de la temperatura a las 12 horas, para cada medición tomada a esa hora y siempre en grados centígrados. El valor medio, en grados centígrados, de la temperatura entre todas las recibidas. La salida del analizador con el fichero de ejemplo de antes debería ser algo así: Temp a las 12 son: 24.520000 C Temp a las 12 son: 34.555553 C Temp a las 12 son: 37.888885 C Temperatura Media en Total: 25.804583 C Nota: Para pasar de X grados farenheit (F) a Y grados centígrados (C) la fórmula es: Y = (X – 32.0) * 5.0 / 9.0.
Of all the mythological creatures, few have captured the human imagination as much as the dragon. It appears in the literature and legends of cultures as diverse ...
121e)1('f2. 1. 2. = ⋅. +. = sustituyendo. (. ) 1xe3ey. −. ⋅. = − ordenando e2x e3y. −. = b. Se pide hallar por cálculo integral el área acotada entre la función y el ...
En el caso del campo eléctrico creado por una carga puntual, el potencial tiene la .... c) La variación de energía potencial que ha experimentado el satélite al ...
En relación con las proteínas: a) Explique su estructura primaria y secundaria (1 punto). Solución. ESTRUCTURA PRIMARIA. La estructura primaria es la ...
2. Relacionado con el metabolismo celular: a) Defina anabolismo y catabolismo celular: b) Nombre el sustrato inicial y el producto final de la glucólisis e indique ...
Cataluña se volvió a proclamar el estado Catalán; Asturias los sindicatos mineros proclamaron en Mieres la República Socialista, reprimida por tropas dirigidas ...
para mantener a la familia, mientras que la mujer cuidaba de la casa y del marido ... Pasiva refleja núcleo. S.prep./CCL. Núcleo. Prop. Subord. Sustantiva de CD.
temperaturas de fusión de los compuestos nitrógeno, aluminio, diamante y tricloruro de boro: a) Asigne a cada compuesto el valor que le corresponde a sus ...
Cuya ecuación cinética o “ley de velocidad” es v = k [A], indique como varía la ... desplazado el equilibrio de disociación hacia los productos, mayor grado de.
27 ene. 2017 - El pago podrán realizarlo 15 días antes de la fecha señalada enviando por correo electrónico copia digital (no fotografía) del comprobante de pago y de identificación. (IFE) a la dirección [email protected], a más tardar la fecha
Visto el Informe N' 1253-2003/DEEPA y el Oficio N' 1084-2003-EM/DGH sobre las empresas de l Sector Hi drocarburos y sus vertimientos de efluentes liquidos;.
UNIVERSIDAD. CATOLICA. GUAYAQUIL. AV. CARLOS JULIO AROSEMENA KM 1 1/2. TARJETA Y EFECTIVO .... Y ASCÁZUBI. TARJETA Y EFECTIVO. SUCUA. SUCUA. CALLE EDMUNDO CARVAJAL Y KIRUBA. TARJETA Y EFECTIVO. TENA. TENA. CALLE 15 DE NOVIEMBRE Y CALLE TENA. TARJETA
16 jun. 2016 - CENTRO GUAYAQUIL CALLE PICHINCHA #309 Y 9 DE OCTUBRE. TARJETA Y EFECTIVO. GUAYAQUIL. CHILE SUR. CHILE Y CAÑAR (SOLAR 3 ... MACHALA. ROCAFUERTE Y GUAYAS ESQ. TARJETA Y EFECTIVO. MACHALA. PASEO SHOPPING. MACHALA. KM 1 1/2 VIA MACHALA PAS
razón en el amor de Dios: “Los primeros. Apóstoles, cuando el ... Y de ahí, a la rectificación de la conducta: “«Lo que debo a Dios, por cristiano: mi falta de correspondencia, ante esa deuda, me ha hecho llorar de dolor: de dolor de Amor. 'Mea culpa
concretar otra hora para realizar el examen o con jefatura de estudios a través del siguiente email [email protected]. CALENDARIO PRUEBAS EXTRAORDINARIAS ESO – BACHILLERATO -. 3 ... TECNOLOGÍA INDUSTRIAL (BACH).
gravísima que merece la excomunión? ¿He abortado o inducido a alguien a abortar, y estoy enterado de que es un pecado mortal que excomulga a TODOS los ...