UNIVERSIDAD LATINA (UNILA)

Slides:



Advertisements
Presentaciones similares
Filminas Segunda semana
Advertisements

Clasificación de los compiladores
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
Prof. Ing.Maria Rosa Damaso Rios
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
Gramáticas Libres de Contexto
¿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.
Teoría de Autómatas y Compiladores
¿Cómo hacer para que una máquina comprenda el LN?
Facultad de Ciencias de la Computación
Fundamentos de programación
Analizadores Sintácticos Descendentes Predictivos
Unidad 1. Introducción al proceso de compilación.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
CAPITULO 2 La Representación del Conocimiento
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.
Tema 6. Conceptos básicos de programación
PROGRAMACIÓN LÓGICA.
Tema 2 Lenguajes Formales.
M.C. Meliza Contreras González
Análisis sintáctico LR: SLR (LR simple)
Procesadores del Lenguaje
Teoría de lenguajes y compiladores
Fundamentos de programación
FUNDAMENTOS DE PROGRAMACION
INGENIERIA EN SISTEMAS COMPUTACIONALES
ANALISIS SINTACTICO Parte I
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Compiladores Introducción Oscar Bonilla Universidad Galileo.
Clasificación de Gramáticas y Manejo de Errores
Universidad Nacional de Jujuy Facultad de Ingeniería
PROGRAMACION DE SISTEMAS
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
Teoría de lenguajes y compiladores Analizadores lexicográficos
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
Análisis Léxico Área Software de Base.
INFORMATICA VII (Programación e implementación de sistemas)
UNIVERSIDAD VALLE DEL MOMBOY FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN CATEDRA: EDUMATICA Br: JENNY CORONADO C.I
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
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.
Teoría de lenguajes y compiladores
Prof. Flor Narciso Departamento de Computación
Autómatas y Compiladores Novena Semana. Ricardo Vargas Del Valle A35469.
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Teoría de lenguajes y compiladores
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
El proceso de compilación
Unidad 3 Analizador Sintáctico
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
TEMA 4: MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Autómatas y Compiladores Semana 13. Ricardo Vargas Del Valle A35469.
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
Transcripción de la presentación:

UNIVERSIDAD LATINA (UNILA) ANÁLISIS SINTÁCTICO LE, EI, Profesor Ramón Castro Liceaga

Sintaxis Sintaxis.- La sintaxis es un conjunto de reglas formales que especifican la composición de programas a partir de ciertas unidades de construcción (Caracteres). Semántica.- Especifica el significado de un programa sintácticamente válido escrito en el lenguaje, o es el resultado entendible de la sintaxis. La sintaxis.- Es la agrupa ción los tokens en estructuras sintácticas, muy similar a las oraciones aritmeticas. Para un lenguaje de programación bb * 12 consiste de tres tokens (bb, * y 12) y deben agruparse en una estructura denominada expresión. Mientras que, X1 := a + bb * 12; debe agruparse en una estructura llamada sentencia de asignación que contiene la subestructura expresión.

Análisis Léxico El analizador léxico crea tokens a partir de un character stream (cadena de caracteres) Los tokens se definen usando expresiones regulares Oscar Bonilla 3 Universidad Galileo

Análisis semántico Toma como entrada el árbol de análisis gramatical creado en la fase de análisis sintáctico. Esta fase determina el significado (semántica) del programa mediante la creación de tablas de símbolos, verificando cuales de las variables utilizadas han sido definidas y una infinidad de otras tareas anteriores a la generación de código. Dos de las tareas principales en la fase del análisis semántico son: 1) la verificación estática del programa y 2) la generación de una representación intermedia (RI).

Análisis semántico Es La representación intermedia también denominada lenguaje intermedio o código intermedio (RI, LI p CI), es una forma alternativa para un árbol de análisis gramatical. A veces el analizador gramatical crea su representación intermedia en forma directa; y en ocasiones el árbol de este se convierte a la representación.

Expresiones Regulares, Gramáticas y Lenguajes Una expresión regular puede ser escrita usando: Caracteres en el alfabeto o el código assii Operadores de expresiones regulares: ‘*’ ‘·’ ‘|’ ‘+’ ‘?’ ‘(‘ ‘)’ Ejemplo: (-| ε) ·(0|1|2|3|4|5|6|7|8|9)+ · (. ·(0|1|2|3|4|5|6|7|8|9)*)? Un lenguaje regular es un lenguaje definido por una expresión regular Oscar Bonilla 6 Universidad Galileo

Función del Análisis Léxico El analizador léxico crea tokens a partir de un character stream o cadena Los tokens se definen usando expresiones regulares Las expresiones regulares pueden mapearse a un Automata Finito No Determinístico (NFA) Por construcción simple NFA se transforma a un DFA Algoritmo de transformación Ejecutar un DFA es fácil Oscar Bonilla 7 Universidad Galileo

Sintaxis y Semántica de un Lenguaje de Programación? Como se ve un programa Representación textual o estructura Es posible una definición matemática precisa Un analizador sintáctico (o parser) es una de las partes de un compilador que transforma su entrada en un árbol de derivación. Semántica Cuál es el significado de un programa Es más difícil dar una definición matemática Oscar Bonilla 8 Universidad Galileo

Por qué hacer análisis sintáctico? Podemos proveer una definición precisa y fácil de entender Una gramática apropiada imparte estructura a un lenguaje de programación Podemos construir automáticamente un parser que determine si el programa es sintácticamente correcto Ayuda en el proceso de traducción Fácil modificar/añadir al lenguaje Oscar Bonilla 9 Universidad Galileo

Anatomia de un Compilador Programa (character stream) Analizador Léxico (Scanner) Token Stream Analizador Sintáctico (Parser) Arbol de Parseo Generador de Código Intermedio Representación Intermedia Optimizador de Código Representación Intermedia Optimizada Generador de Código Código en Assembler Oscar Bonilla 10 Universidad Galileo

Entrada y Salida de un Parser Token Stream Arbol de Parseo N1.- menos_op - ( N2.- Parentesis_izq_op Analizador Sintáctico (Parser) N3.- num(123.3) 123.3 ) N4.- mas_op N3.- num(23.6) + 23.6 N2.- Parentesis_der_op Oscar Bonilla 11

Arbol de Parseo Representación gráfica de la estructura parseada (análisis sintactico) Muestra la secuencia de derivaciones efectuada Nodos internos son no-terminales Hojas son terminales Cada nodo padre es el lado izquierdo (LHS) y los hijos son el lado derecho (RHS) de una producción Oscar Bonilla 12 Universidad Galileo

Ejemplo de Derivación <expr>  <expr> <op> <expr>  num <op> <expr>  num ‘*’ <expr>  num ‘*’ ‘(‘ <expr> ‘)’  num ‘*’ ‘(‘ <expr> <op> <expr> ‘)’  num ‘*’ ‘(‘ num <op> <expr> ‘)’  num ‘*’ ‘(‘ num ‘+’ <expr> ‘)’  num ‘*’ ‘(‘ num ‘+’ num ‘)’ num ‘*’ ‘(‘ num ‘+’ num ‘)’ Oscar Bonilla 13 Universidad Galileo

Ejemplo de Arbol de Parseo <expr> Oscar Bonilla 14 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  <expr> <op> <expr> <expr> <expr> <op> <expr> Oscar Bonilla 15 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  num <expr> <expr> <op> <expr> num Oscar Bonilla 16 Universidad Galileo

Ejemplo de Arbol de Parseo <op>  ‘*’ <expr> <expr> <op> <expr> num * Oscar Bonilla 17 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  ‘(‘ <expr> ‘)’ <expr> <expr> <op> <expr> <expr> num * ( ) Oscar Bonilla 18 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  <expr> <op> <expr> <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> Oscar Bonilla 19 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  num <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num Oscar Bonilla 20 Universidad Galileo

Ejemplo de Arbol de Parseo <op>  ‘+’ <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num + Oscar Bonilla 21 Universidad Galileo

Ejemplo de Arbol de Parseo <expr>  num <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num num + Oscar Bonilla 22 Universidad Galileo

Ejemplo de Arbol de Parseo num ‘*’ ‘(‘ num ‘+’ num ‘)’ <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num num + Oscar Bonilla 23 Universidad Galileo