ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.

Slides:



Advertisements
Presentaciones similares
GRAMATICA LIBRE DE CONTEXTO
Advertisements

Ejemplo Práctico de un Compilador Pequeño
Infijo a postfijo Expr -> Expr + Término Expr -> Expr - Término
Análisis Sintáctico Capítulo 4.
Análisis Sintáctico Descendente
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Filminas Segunda semana
Filminas Octava Semana CI-1322 Autómatas y Compiladores Elaborado por: Sergio Pastrana Espinoza A33888.
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
Gramáticas Libres de Contexto
Análisis Lexicográfico
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
Procesadores de Lenguaje
Procesadores de Lenguaje
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Tema 2.- Gramáticas independientes de contexto.
¿Cómo hacer para que una máquina comprenda el LN?
Organización de Lenguajes y Compiladores 1
ANALIZADOR SINTACTICO
Unidad 3. Análisis Sintáctico
Teoría de lenguajes y compiladores
Ramas de la Lingüística
Preguntas tipo test (Tema I)
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
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.
Teoría de lenguajes y compiladores
Analizador Sintáctico Descendente
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Algoritmos para calcular el Conjunto Primero y el Conjunto Siguiente
Programación de sistemas
Árboles.
Análisis sintáctico LR: SLR (LR simple)
Procesadores del Lenguaje
M.C. Juan Carlos Olivares Rojas
FUNDAMENTOS DE PROGRAMACION
ANALISIS SINTACTICO Parte I
Estructura de Datos y Algoritmos
Procesamiento Práctico del lenguaje Natural Capítulo XXIII.
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
Teoría de lenguajes y compiladores
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
Compiladores e intérpretes Análisis Sintáctico III
Programación de Sistemas
Compiladores e intérpretes
Definiciones: conjuntos, grafos, y árboles
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
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.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
UNA BNF A GRAFO SINTACTICO
Teoría de lenguajes y compiladores
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Matemáticas Discretas MISTI
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.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.
Transcripción de la presentación:

ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.   Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los símbolos terminales. Las reglas de producción de la gramática relacionan cada nodo no terminal y sus hijos.

Árbol de sintaxis de una oración Sujeto the see Verbo I Sustantivo Objeto cat .

Sea G una gramática libre de contexto un árbol de sintaxis de G es un árbol rotulado y ordenado, con las siguientes propiedades:  para cualquier símbolo no terminal N de G, un N-árbol tiene un nodo raíz rotulado por N. Sus subárboles pueden ser un X1-árbol, ......, Xn-árbol (de izquierda a derecha) solamente si N::= X1..... Xn es una regla de producción de G. (si la regla de producción es N::= , el N-árbol no tiene subárboles    Para cualquier símbolo terminal t de G, un t-árbol es un único nodo terminal rotulado por t.

Ejemplo 1) Dada la regla de producción Número ::= Dígito | Número Dígito Un número-árbol posible es Número Dígito 4

Ejemplo Comando Expresión Número 3 9 = * Dígito 2) Dado el comando ‘3*9=’ y teniendo en cuenta las reglas de producción para formar comandos y expresiones (Ejemplo de la calculadora), el árbol de sintaxis correspondiente es: Comando Expresión Número 3 9 = * Dígito

FRASES, SENTENCIAS y LENGUAJE Sea G una Gramática Libre de Contexto.   Una frase de G es una cadena de símbolos terminales, los que forman una N-frase de G para cada símbolo no terminal N de G. Una sentencia de G, es una S-frase de G, donde S es el símbolo de partida de G. El lenguaje generado por G, es el conjunto de todas las sentencias de G.

Por ejemplo :  “I see the cat .” es una Sentencia-frase de G.    “I” es un Sujeto-frase  “see” es un Verbo-frase  “the cat “es un Objeto-frase. “I”, “see” y “the cat” son cadenas de símbolos terminales.

En el ejemplo de la Calculadora:  “3”, “40” y “365” son Numeros-frases  “3*9” y “40-3*9” son Expresiones-frases  “3*9=” y “40-3*9=” son Comandos-frases

INTERPRETACIÓN DE LOS ÁRBOLES DE SINTAXIS Los árboles de sintaxis pueden ser usados para darle un significado a la sentencia, aplicando algún tipo de interpretación de semántica al mismo.   Sea el comando ' 40 - 3 * 9 = ' en el ejemplo de la calculadora Comando Expresión Número 40 3 * - 9 = Este árbol sugiere que el comando se calculará como: (40-3)*9 =

AMBIGÜEDAD El siguiente ejemplo muestra que una gramática diseñada sin cuidado puede ser ambigua con respecto a alguna sentencia. Ejemplo: consideremos una variación de la regla de producción de la gramática G para Expresión en el ejemplo de la calculadora: Expresión ::= Número | Expresión + Expresión | Expresión - Expresión | Expresión * Expresión y mantenemos las otras reglas de producción.

La gramática G resulta ambigua con respecto a algunas de las expresiones como por ejemplo, la expresión "40 - 3- 9 " puesto que ésta se corresponde con dos árboles de sintaxis diferentes. Expresión Número 9 3 - 40 Interpretación: (40 - 3) - 9 40 - (3 - 9)

Ejemplo 2 Sea la siguiente regla de producción en el lenguaje de programación L. Com ::= Var:=Expr | if Expr then Com | if Expr then Com else Com donde: Com  nombra la clase de comandos. E y E  expresiones arbitrarias y C y C  comandos arbitrarios (tales como asignaciones). Luego el comando ‘if E then if E then C else C’ es ambiguo

Árboles de sintaxis para Com then if E Expr C E’ else C’ Com then if E Expr C E’ else C’

RECONOCIMIENTO y ANÁLISIS SINTÁCTICO El RECONOCIMIENTO de una cadena terminal en una gramática G es decidir si la cadena es o no una sentencia de G, de acuerdo a las reglas de G.   El ANÁLISIS SINTÁCTICO o "parsing" de una cadena terminal, en una gramática G es el reconocimiento más la reconstrucción del(los) árbol(es) de sintaxis de la cadena, de acuerdo a las reglas de G. El análisis sintáctico es necesario para deducir cada estructura de frase de la sentencia y luego determinar su significado.

Ejemplo: Consideremos las reglas de la gramática del ejemplo de la calculadora: Expresión = Comando (a) Número + * - (c) (b) (e) (d)

Analizaremos la cadena terminal:   ‘40 - 3 * 9 = ’ (1) ‘40’, ‘3’ y ‘9’ son Número -frases Número 40 3 9 * - =

(2) Hacemos corresponder el número ‘40’con el fragmento del árbol (b) 3 9 * - = Expresión 3) El fragmento de árbol (b), el terminal ‘-’ y el número 3, podemos corresponderlos con el fragmento de árbol (d) Número 40 3 9 * - = Expresión

(4) El último fragmento de árbol, el terminal ‘ (4) El último fragmento de árbol, el terminal ‘*’ y el número ‘9’, podemos corresponderlos con el fragmento del árbol (e): Expresión Número 40 3 * - 9

Comando (5) El último fragmento del árbol y el terminal ‘=’, podemos corresponderlos con el fragmento de árbol (a) Comando Expresión Número 40 3 * - 9 =

AUTOINCLUSIÓN (Anidamiento) Las gramáticas Libres de Contexto son muy efectivas para especificar estructuras de frases anidadas (self-embedded) Ejemplo: Pascal tiene: (a) expresiones anidadas: a - (b + c) sin (2 * x) (b) comandos anidados: if a > b then m := a else m := b begin x := 0; y := 0 end

Una gramática libre de contexto G es anidada si, para algunos símbolos no terminales N de G, existe una N-frase  tal que  es también una N-frase y tal que tanto  como  son cadenas terminales no vacías. El anidamiento Recursividad en las Reglas de producción Por ejemplo: Com::= Var:= Expr | if Expr then Com | if Expr then Com else Com Es una regla recursiva.