Procesadores del Lenguaje

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

Ejemplo Práctico de un Compilador Pequeño
Análisis Sintáctico Capítulo 4.
Filminas Segunda semana
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Generación de código intermedio II
Compiladores e intérpretes
Compiladores e intérpretes Análisis Sintáctico III
Programación de Computadores
Análisis Lexicográfico
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Procesadores de Lenguaje
Manejo de errores y excepciones
Prototipo de compilador didáctico del lenguaje LC99
Facultad de Ciencias de la Computación
ANALIZADOR SINTACTICO
Analizadores Sintácticos Descendentes Predictivos
Unidad 2. Análisis léxico
Teoría de lenguajes y compiladores
Analizador Léxico. 4 scanners:
Compilador HTML David Morales Marco Jiménez Carlos Márquez
Procesadores de Lenguajes I
Programación 1 Introducción
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
Analizador Sintáctico Descendente
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Programación de sistemas
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
Análisis sintáctico LR: SLR (LR simple)
Instituto Tecnologico de Durango Programacion de Sistemas II
M.C. Juan Carlos Olivares Rojas
Teoría de lenguajes y compiladores
M.C. Juan Carlos Olivares Rojas
INGENIERIA EN SISTEMAS COMPUTACIONALES
ANALISIS SINTACTICO Parte I
Informática Ingeniería en Electrónica y Automática Industrial
Clasificación de Gramáticas y Manejo de Errores
Universidad Nacional de Jujuy Facultad de Ingeniería
Teoría de lenguajes y compiladores
Procesadores de Lenguajes
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Introducción al Análisis Sintáctico
Compiladores e intérpretes Análisis Sintáctico III
Módulo 8: Manejo de Errores y Excepciones
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
INFORMATICA VII (Programación e implementación de sistemas)
Programación de Sistemas FEI – 2008
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Autómatas y Compiladores Novena Semana. Ricardo Vargas Del Valle A35469.
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Procesadores de Lenguajes
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
El proceso de compilación
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Conceptos y Lenguaje Imperativo
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Transcripción de la presentación:

Procesadores del Lenguaje Compilador de Pascal Entrega final Grupo 2 Daniel Dionne González Alberto Milán Gutiérrez Borja Gómez Gómez Antonio de Miguel Vicenti Miguel Martínez Segura

Objetivos. Registros IF-THEN-ELSE (gramática LL(2) forzada) Bucle FOR Funciones Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Scanner. Programado por el grupo 4: Carlos Sánchez-Vellisco Sánchez Martín Montalvo Martínez Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Scanner. Reglas. Tokens de 4 atributos Tipo de token, atributos, línea y columna Generación del scanner directamente a partir de las expresiones regulares. Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Scanner. Herramientas. Scanner generado con Jflex. Interpreta las expresiones regulares con sus acciones semánticas asociadas. Genera un analizador léxico que reconoce el texto y va produciendo tokens. Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Scanner. Detalles destacables. Gestor de errores Clase interna del scanner Según el error lanzado devuelve el mensaje, la línea y la columna. Relación con la TS Se configuran los atributos “lexema” y “tipo-token”

Parser. Programado por el grupo 4: Carlos Sánchez-Vellisco Sánchez Martín Montalvo Martínez Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Parser. Reglas. Parser descendente no recursivo predictivo (tabular) Basado en gramática LL(1), excepto por el problema del else en la producción del if Traducción dirigida por sintaxis Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Parser. Herramientas. Parser generado con SLK. Convierte una gramática definida en notación similar a EBNF en un parser. Deja espacio para rellenar las reglas semánticas pertinentes. Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Semántico. Programado por el grupo 2: Antonio De Miguel Vicenti Daniel Dionne González Miguel Martínez Segura Alberto Milán Gutiérrez Borja Gómez Gómez Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Semántico. Reglas. Está fuertemente unido al parser Realiza las comprobaciones necesarias sobre la salida del parser Llama al generador de código en las producciones pertinentes Inserción de tipos en la tabla de símbolos Apertura y cierre de ámbitos Modo debug detallado Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Semántico. Herramientas. Semántico generado completando el parser cedido por el grupo 4, añadiendo las acciones necesarias Librería SWT para ver la salida por pantalla Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Semántico. Detalles destacables I Clase Nodo. Objeto similar a un token, con los mismos atributos, pero que almacena la información de los elementos terminales y no terminales de la gramática. Uso de dos pilas auxiliares sincronizadas. Objetivo: Controlar la ejecución de las reglas de la gramática. Pila: Almacena los Nodos habituales de las reglas de la gramática. PilaLista: Almacena, en caso de obtener una lista de elementos desde la gramática mediante el parser, una copia básica para llevar la contabilidad de éstos.

Semántico. Detalles destacables II Clase “OptionalNonTerminals”. Contiene un tipo enumerado con todas las situaciones opcionales de la gramática. Con estos enumerados se crea un array de flags. En las acciones semanticas se consultan estos flags para gestionar la interaccion con la TS. Ejemplos: Operadores Encontrarse dentro de una declaración de función

Generador de código. Programado por el grupo 2: Antonio De Miguel Vicenti Daniel Dionne González Miguel Martínez Segura Alberto Milán Gutiérrez Borja Gómez Gómez Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Generador de código. Reglas. El semántico genera los datos necesarios, recupera los tipos y llama al generador de código El generador lleva un contador de etiquetas y una pila de variables para manejar la pila de datos en memoria Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Generador de código. Herramientas. No se han utilizado herramientas de desarrollo en esta parte Se utiliza el intérprete ENS2001 para probar el código generado Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Pruebas con errores léxicos program Prueba01; {cadena mal formada} var z : integer; x : integer; y : integer; begin x := 3.2.1 + z; write (x); end. program Prueba02; {carácter no reconocido} var ç : integer; ç := 3; Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Pruebas con errores sintácticos program prueba01; var a: integer; begin a := ; end. program prueba02; if (a<3) a := a + a; program prueba03; function Funcion (valor: integer) : integer; Funcion := 3; a := Funcion(3); Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Pruebas con errores semánticos program prueba01; {Errores en la comprobación de tipos} var x: integer; y: boolean; begin x := y; end. program prueba02; {Error en el retorno de valores en funciones} function Funcion: integer; var k : integer; k := 1; end; x := Funcion; program prueba03; Funcion:=3; Funcion:=2; Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Código de prueba (I) program Prueba01; {Op. Arit. simple } var z : integer; x : integer; y : integer; begin read(z); read(y); x := y + z; write (x); end. program prueba02; {Prueba de escritura y lectura con registros} type TCarta = record palo : integer; numero: integer; end; var x: TCarta; y: integer; x.palo := y; x.numero := y; y := x.palo; write (y); y := x.numero; program Prueba03; {devuelve el mayor} var a : integer; b : integer; read(a); read(b); if (a<b) then write(a) else write(b); Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final

Código de prueba ( y II) program Prueba04; {multiplica con sumas a*b} type TReg = record m1 : integer; m2 : integer; resultado : integer; end; var a,b : integer; x,y : integer; mult : TReg; function funcion (k : integer): integer; begin funcion := 0; y := funcion(1); read(a); mult.m1:=a; read(b); mult.m2:=b; if (mult.m1=1) then mult.resultado:=b else for x := 1 to mult.m2 do mult.resultado := mult.resultado+mult.m2; y:=mult.resultado; write(y) end. 22 Procesadores del Lenguaje Práctica "Compilador de Pascal" Entrega final 22