Conceptos básicos: 1,2 puntos

Documentos relacionados
!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Centro de Capacitación en Informática

Matemáticas para la Computación

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CAPITULO II SISTEMAS DE NUMERACIÓN Y CÓDIGOS

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

TEMA 7: DIAGRAMAS EN UML

LINUX - Los archivos de órdenes I

Sistemas de numeración y aritmética binaria

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Para dudas, comentarios escribe a: C BASICO

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

SOLUCION EXAMEN junio 2006

Introducción a los Sistemas Digitales

Base de datos en la Enseñanza. Open Office

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

EXÁMENES DE REPASO Teoría de Autómatas y Lenguajes Formales UNIVERSIDAD FRANCISCO DE VITORIA

Práctica 0. Emulador XENON de la computadora CESIUS

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Computación I Representación Interna Curso 2011

Representación de números enteros: el convenio signo y magnitud

CRITERIOS DE EVALUACIÓN DE TALLER DE MÚSICA CRITERIOS DE EVALUACIÓN PARA 2º DE ESO

Fundamentos de la Programación

Unidad 3 Direccionamiento IP (Subnetting)

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

5.8. REGISTRO DE FACTURAS.

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

INSTRUCTIVO DEL COMANDO MAKE

Informe de Servicio Social. actividades tienen en la población meta y acerca del aprendizaje obtenido por el prestador de

Práctica 4 Manejo avanzado de Bison

Teoría de la Computación

TEMA 2: Representación de la Información en las computadoras

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Centro de Capacitación en Informática

Figura 4.1 Clasificación de los lenguajes de bases de datos

Guía del usuario de DocuShare Agent

Instructivo de Microsoft Excel 2003

Qué son los monomios?

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Tema 04:Fracciones. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

Introducción a la Computación

MATEMÁTICAS CON LA HOJA DE CÁLCULO

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Y SISTEMAS DE GESTIÓN DE INFORMACIÓN

Introducción. 1. Lenguajes de máquina 2. Lenguajes de ensamblador 3. Lenguajes de alto nivel

Curso 0 de Informática

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 1: Lógica Proposicional

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Guía Corta: Alcance y Asociaciones. 1. Preliminares: Nombres y Asociaciones

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Programación: QBASIC

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

Arquitectura de Redes y Comunicaciones

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Examen de Arquitectura de Computadores

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Operación de Microsoft Word

3.2 Operaciones aritmético-lógicas en Pascal

GESTIÓN DE LA DOCUMENTACIÓN

RECUPERACIÓN DE PENDIENTES EN LA ESO CURSO

Lea esto primero! un estudio de investigación sobre pruebas de VIH que se realizan en la comodidad de su hogar TEST. REPLY. KNOW.

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

MANTENIMIENTO Y SOPORTE

Clase 02: Representación de datos

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Exportación e Importación horarios XML

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Diseño Estructurado de Algoritmos

La ventana de Microsoft Excel

(Altas de prestaciones por ERE S): guía para las empresas

by Tim Tran:

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

PROGRAMACIÓN ORIENTADA A OBJETOS

Representación de Datos. Representación de datos numéricos. Representación de datos caracteres. Representación de otros tipos de datos

Informática I para Bachillerato

Programa de Criminología UOC

Sistemas de numeración

Lenguajes de Programación

Funciones en Excel (II)

EJERCICIOS DEL TEMA 1

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

Curso PHP Módulo 1 R-Luis

DIRECCIONAMIENTO IPv4

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

Transcripción:

Procesadores del Lenguaje 1 Universidad Rey Juan Carlos Departamento de Lenguajes y Sistemas Informáticos I 8 de junio de 2009 Parcial primero. Conceptos básicos y problemas. Entrega en 90 minutos. Lea atentamente todo el enunciado de cada pregunta antes contestar. Especifique nombre y apellidos en todas las hojas que entregue. Cualquier suposición o decisión sobre el enunciado del examen debe ser detallada y justificada convenientemente. Apellidos y Nombre: Número de expediente: Conceptos básicos: 1,2 puntos Para poder aprobar el examen es obligatorio responder correctamente al menos a 4 de las 6 cuestiones a continuación planteadas. Especifique en el espacio siguiente a cada cuestión, si su contenido es cierto o falso, explicando su respuesta si lo cree necesario. La puntuación del apartado, siempre que el número de fallos pregunta sin responder o respondida erróneamente sea menor que 3, será: 1,2-(0,6*NúmeroDeFallos) 1. La gestión de la tabla de símbolos es exclusiva de las fases de análisis de un compilador mientras que la gestión de errores se usa tanto en las fases de análisis como de síntesis. FALSO, la gestión de la tabla de símbolos no es exclusiva de las fases de análisis puesto que también se puede usar en la generación de código intermedio y final de un compilador. La gestión de errores sí es exclusiva de las fases de análisis. 2. ([0-9])+. ([0-9])+ es el lexema que define al patrón constante_real, del cuál, un posible componente léxico es 34.8. FALSO, ([0-9])+. ([0-9])+ es el patrón, constante_real es el componente léxico y 34.8 es un lexema 3. Los autómatas finitos deterministas implementan analizadores léxicos, al igual que los autómatas de pila implementan analizadores sintácticos. FALSO. Efectivamente, un autómata de pila basta para implementar un analizador sintáctico, sin embargo para implementar un analizador léxico necesitamos un traductor finito determinista, es decir un autómata finito determinista ampliado con acciones semánticas.

Procesadores del Lenguaje 2 4. El último símbolo en aparecer en la pila de un analizador LL(1) es el axioma de la gramática. FALSO, los analizadores LL(1) funcionan por derivaciones a partir del axioma, por lo tanto este será el primer símbolo en aparecer en la pila, no el último. 5. Los analizadores sintácticos LR(1) se basan en derivación más a la derecha (Rightmost derivation). CIERTO. 6. Los analizadores ascendentes funcionan con las operaciones de desplazamiento/reduccion. CIERTO. Problema. (4 puntos) El lenguaje de descripción de hardware Verilog permite diseñar e implementar dispositivos donde se trabaja, entre otras posibilidades, con valores numéricos enteros. Algunas de las características de este lenguaje son: El espacio en blanco se usa para separar los tokens de los programas escritos en este lenguaje. Se permite especificar constantes en distintas bases numéricas. Se permite especificar constantes numéricas informando sobre su tamaño en bits. Esta información, aunque no es obligatoria, debe comunicarse al analizador semántico siempre que sea especificada por el programador. Independientemente de la base y tipo de constantes numéricas enteras, estas irán precedidas opcionalmente del signo correspondiente + o -, si no existe signo se supone que la constante numérica es positiva. Las posibles bases para especificar constantes numéricas son: binaria, octal, decimal y hexadecimal. Las constantes en base decimal son simples ristras de dígitos en base decimal. Sin embargo las constantes escritas en el resto de bases (binaria, octal y hexadecimal) deben especificar el tamaño en bits que van a ocupar así como la base en que están escritas. El formato de estas constantes es: una ristra de dígitos decimales que indica el tamaño en bits de la constante, un espacio en blanco opcional, una comilla simple e inmediatamente después la identificación de la base con la letra correspondiente b(binaria), o(octal) o h(hexadecimal), finalmente y separado de forma opcional por otro espacio en blanco la ristra de dígitos que indica el valor de la constante. Por motivos de legibilidad, en este lenguaje se permiten intercalar guiones bajos _ en cualquier ristra de dígitos, salvo al principio de la misma. A continuación se muestran algunos ejemplos correctos y erróneos de constantes numéricas enteras escritas según este lenguaje. Nótese que el caracter denota un espacio en blanco en los ejemplos y las comas separan los distintos ejemplos, pero ninguno de los dos caracteres forma parte del alfabeto de Verilog a contemplar en este ejercicio:

Procesadores del Lenguaje 3 Base Ejemplos correctos Ejemplos erróneos Decimal +0123, -45_6, 0_89 1 +_0123, -456A, 0_8G91 Binaria -4 b1_00, +5 b 01001, 3_0 b11_1-4 b+01_110, +5 b 0201 _3 b11_1 Octal -6 o5_3, +3 o 2, 1_2 o 77_1-6 o05_3, +3 o 8, _6 o7_1 Hexadecimal -8 h3_f, +4 h A, 02_0 h7d7_1-8 hb3_f, +4 h Q, _4 hd Los errores léxicos detectables mediante la inexistencia de transiciones en el autómata no tienen que notificartse explícitamente, pero el resto de errores léxicos sí. Para realizar tareas de traducción se permite el uso de las siguientes funcionalidades: ConvEnt(base, ristra-de-dígitos) Permite obtener el valor numérico de una ristra de dígitos sin signo, según la base especificada. ErrorLex(Mensaje) Permite notificar un error léxico que no haya sido detectado por el autómata. Además se podrá hacer uso de construcciones if-then-else, siempre que no sustituyan funcionalidades implementables mediante el autómata, así como variables, sentencias de asignación y expresiones aritméticas (suma, resta, multiplicación o división). Se pide, justificando las respuestas convenientemente, diseñar la parte del analizador léxico referente a las constantes numéricas enteras, sin cambiar los formatos descritos: 1. Determinar y explicar qué tokens devolverá el analizador léxico. 2. Construir el autómata finito determinista que los reconoce. 3. Definir las acciones semánticas necesarias y construir el traductor finito determinista. Solución al Problema. (4 puntos) 1. Determinar y explicar qué tokens devolverá el analizador léxico. Hay que diferenciar entre los tokens y las facilidades que se le ofrece al programador a la hora de especificar valores enteros. Las distintas bases pertenecen a estas últimas, no son tokens. El token básico representará a las constantes enteras <CTE-ENT, valor>. Sin embargo en el enunciado se especifica claramente: Se permite especificar constantes numéricas informando sobre su tamaño en bits. Esta información, aunque no es obligatoria, debe comunicarse al analizador semántico siempre que sea especificada por el programador. Por lo tanto devolveremos el token <CTE-ENT, valor> para las constantes numéricas y el token <CTE-ENT, valor, tamaño> para las constantes enteras en base binaria, octal y hexadecimal en las que se especifica siempre el tamaño.

Procesadores del Lenguaje 4 2. Construir el autómata finito determinista que los reconoce. Tanto en el autómata como en el traductor usaremos las siguientes definiciones regulares para los dígitos de las distintas bases numéricas: Base binaria: db [01] Base octal: do [0-7] Base decimal: d [0-9] Base hexadecimal: dh [0-9A-Fa-f] En primer lugar vemos el autómata que reconoce constantes numéricas en base decimal. Además este autómata reconocerá la longitud de las constantes en base binaria, octal y hexadecimal. A continuación vemos la parte del autómata que reconoce constantes en el resto de bases numéricas. Parte de este autómata se especifica de forma genérica para las tres bases numéricas: x α y z t 7 db 11 12 13 8 do 14 15 16 9 dh 17 18 19 Donde x representa a los estados de inicio de reconocimiento de la ristra de dígitos binarios(x = 7), octales(x = 8) o hexadecimales(x = 9). α representa a la definición regular correspondiente a los dígitos de la base que corresponda. Finalmente, los estados y, z y t aseguran el reconocimiento diferenciado del resto de la ristra de dígitos para cada base numérica. 3. Definir las acciones semánticas necesarias y construir el traductor finito determinista. La acción de leer el siguienbte caracter está implícita en cada transición del autómata, el resto de acciones semánticas a utilizar son: C Concatenar el carácter leído en el buffer de lexema. B Borrar el buffer de lexema. R Retroceder el puntero de lectura en una posición. P signo = 1;

Procesadores del Lenguaje 5 N signo = -1; D<... > Devolver token al analizador sintáctico con la información especificada entre <y >. DEC D<CTE-ENT, signo*convent(10,lexema)>; B; R; T tamaño = ConvEnt(10,lexema); cuenta=0; B; Bb base = 2; Dim = 1; /*1 bit por cada dígito binario*/ Bo base = 8; Dim = 3; /*3 bits por cada dígito octal*/ Bh base = 16; Dim = 4; /*4 bits por cada dígito hexadecimal*/ CC cuenta = cuenta + 1; C; RES if(cuenta*dim >tamaño) then ErrorLex( ERROR: El valor de la constante,lexema, en base,base, no se ajusta al tamaño especificado ); else D<CTE-ENT-D, signo*convent(base,lexema), tamaño>; B; En primer lugar vemos el traductor correspondiente a las constantes numéricas en base decimal. Además este traductor detectará la longitud de las constantes en base binaria, octal y hexadecimal. A continuación vemos la parte del traductor correspondiente a las constantes en el resto de bases numéricas. De nuevo parte de este traductor se especifica de forma genérica para las tres bases numéricas: x α y z t 7 db 11 12 13 8 do 14 15 16 9 dh 17 18 19

PROCESADORES DEL LENGUAJE CRITERIOS DE CORRECCIÓN JUNIO 2009 PARCIAL 1º Conceptos básicos (1,2 puntos) Especificado en el enunciado. Test de teoría (4,8 puntos) Especificado en el enunciado. Analizador léxico (4 puntos) Penalizaciones muy graves: Usar transiciones sin etiquetar. Usar transiciones con la misma entrada y desde el mismo estado que lleven a estados distintos. Usar definiciones regulares sin contenido, que provoquen no determinismo. Usar transiciones con origen en estados finales. Penalizaciones graves: Reconocimiento incorrecto: reconocer cadenas incorrectas o no reconocer cadenas correctas. No utilizar delimitadores cuando se debe. Omisión de acciones semánticas necesarias. Orden de ejecución de acciones semánticas incorrecto. No especificar correctamente el token devuelto. No reconocer/devolver el tamaño de las constantes. No reconocer el error léxico provocado por el tamaño. Realizar los cálculos erróneos. Usar acciones semánticas sin definir. Usar definiciones regulares sin contenido. No devolver valor asociado a los token. Penalizaciones leves: Mala utilización de la API de cálculo. No tratar el signo. Devolver por bases las constantes enteras.