IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS

Slides:



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

Ejemplo Práctico de un Compilador Pequeño
Filminas Segunda semana
Clasificación de los compiladores
Compiladores e intérpretes
Gramáticas, lenguajes y reconocedores
¿Cómo hacer para que una máquina comprenda el LN?
Analizadores Sintácticos Descendentes Predictivos
Unidad 1. Introducción al proceso de compilación.
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
Tema 4. Gramáticas y Análisis Sintáctico PARSER
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
Tema 2 Lenguajes Formales.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
M.C. Meliza Contreras González
Procesadores del Lenguaje
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Teoría de lenguajes y compiladores
INGENIERIA EN SISTEMAS COMPUTACIONALES
ANALISIS SINTACTICO Parte I
TIPOS DE DATOS ABSTRACTOS
Compiladores (23/04/ :35) Compiladores Tema 3 Análisis Lexicográfico Scanners.
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
ESTRUCTURA DE DATOS ESD-243
COMPONENTES DE UN ALGORITMOS
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
Programación de Sistemas
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Teoría de lenguajes y compiladores
Análisis Léxico Área Software de Base.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Alto Nivel. Y Es un compilador. YContiene un conjunto de palabras.
INFORMATICA VII (Programación e implementación de sistemas)
Elementos básicos del lenguaje
Autómatas de Pila (Pushdown Automatón)
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
Términos algoritmo diseñar algoritmo implementar algoritmo
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
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
PRINCIPIOS DE PROGRAMACIÓN

INTRODUCCIÓN LI & MSC OSCAR RAMÍREZ CORTÉS U NIVERSIDAD DE LA H UASTECA V ERACRUZANA L ENGUAJES DE P ROGRAMACIÓN.
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Lic. Carla Aguirre Montalvo
Programación de Sistemas
EL TIPO DE DATO LOGICO y constantes.
Conceptos y Lenguaje Imperativo
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.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Características de “C” Esta conformado por un Ambiente Integrado. Es un Lenguaje de Nivel medio.Es un compilador. Contiene un conjunto de palabras reservadas.
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:

IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS UNIVERSIDAD LATINA (UNILA) IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS LE, EI, Profesor Ramón Castro Liceaga

Gramáticas Formales Una gramática es una colección estructurada de palabras y frases ligadas por reglas que definen un conjunto de cadenas de caracteres que representan los comandos completos, que pueden ser reconocidos por un motor de discurso (compilador)

Definición de Gramática Una gramática G es una tupla (T,N,I,P) donde: T conjunto de símbolos terminales. N conjunto de símbolos no terminales. IÎN símbolo inicial. P conjunto de producciones.

Ejemplo de Gramática La gramática G=(N,T,I,P) donde, N={I,A,B} T={x,(,),+,-,*,/;} P={ I®I+I I®I-I I®A A®A*A A®A/A A®(I) A®x } Secuencias generadas por G: x, x*x x*x+x x*(x/x) x-x+x*x/x

Forma BNF Una forma de representar las gramáticas es a través de la forma Bakus-Naur (BNF) la cual se usa para describir la sintaxis y la notación de un lenguaje de programación.

<regla> = sentencias y frases * Forma BNF La función de una gramática es definir y enumerar las palabras y frases válida de un lenguaje. La forma general definida por BNF es denominada regla de producción y se puede representar por: <regla> = sentencias y frases *

Forma BNF Las partes de la forma general BNF se definen de la siguiente forma: El lado izquierdo o regla es el identificador único de las reglas definidas para el lenguaje. Puede ser cualquier palabra con la condición de estar encerrada entre los símbolos < >. Este elemento es obligatorio en la forma BNF. El operador de asignación = o ::= es un elemento obligatorio.

Forma BNF El lado derecho o sentencias, instrucciones y frases, define todas las posibilidades válidas en la gramática definida. El delimitador de fin de instrucción (punto o cualquier símbolo) es un elemento obligatorio.

<raiz> = Archivo <raiz> = <opciones> Forma BNF Ejemplo de una gramática que define las opciones de un Menú en forma de ventana: <raiz> = Archivo |Abrir |Guardar |Enviar |Imprimir |Salir. En este caso encontramos el concepto de símbolos terminales (T) y símbolos no-terminales (N). Un símbolo terminal es una palabra del vocabulario definido en un lenguaje (Imprimir, Guardar, etc). Un símbolo no-terminal que se puede definir como una regla de producción de la gramática, por ejemplo <raiz> = <opciones>

Forma BNF En el ejemplo se utilizó el símbolo | de (OR) lo cual denota opciones de selección mutuamente excluyentes ya que solo se puede elegir una opcion.

Practica #8 Siguiendo la siguiente regla de producción forma BNF: <raíz> = <campos> Hacer una gramática G en Java que cambie una cadena de entrada de N (comas) En N (comillas) logrando el formato requerido como se muestra en el siguiente ejemplo : Cadena de entrada, para registro de un empleado en una Base de Datos: Lopez,Roberto,3014,,8.25,6.5,,,10.75,8.5 (diez campos, no todos tienen datos) Logrando una cadena de salida INSERT INTO empleado VALUES ('Lopez','Roberto','3014', '', '8.25', '6.5', '', '', '10.75', '8.5‘); En el cual el símbolo terminal (T) es un punto y coma (;) Nota: La salida de la gramática será para 10 registros diferentes mostrados en un archivo PDF.

Lenguaje formal Esta constituido por un alfabeto, un vocabulario y un conjunto de reglas de producción definidas por gramáticas. Las frases o instrucciones válidas de un lenguaje formal son aquellas que se crean con los símbolos y palabras definidas, tanto en el alfabeto como en el vocabulario del lenguaje y que cumplen con las reglas de producción definidas en las gramáticas.

Clasificación de las Gramáticas Regulares Producciones: N®TN N®T Analizador: autómata finito determinista. Complejidad del análisis: lineal Libres del Contexto N®(T|N)* Analizador: autómata con pila. Dependientes del Contexto a®b, donde a,b Î (T|N)* y |a| £ |b| Complejidad del análisis: exponencial Generales o distribuidas Complejidad del análisis: no se puede con memoria finita.

Jerarquización de gramáticas Las gramáticas pueden ser de distintos tipos, de acuerdo con las características que rigen la formulación de reglas de producción válidas, todas las cuales parten de las gramáticas arbitrarias, que son aquellas que consideran la existencia infinita de cadenas formadas por los símbolos del lenguaje.

Notación BNF Extendida Regla BNF: no terminal ::= expresión BNF Terminal: Forma única: secuencia de caracteres que lo forma. Ej. if, +, then, for Forma variable: nombre que lo identifica. Ej. identificador, numero, string, carácter, literal No Terminal: nombre entre < y > Ej. <programa>, <lista de argumentos>, <expresión>, <instrucción> Secuencia vacía: l Operadores: Unión: a | b Secuencia: a b Opcional: [a]= l | a Repetición: {a}= l | a | a a | a a a |...

Ejemplo Gramática simplificada de la declaración de una variable en C. <dec>::=<tipo> <var> {, <var>}; <tipo>::=[signed|unsigned] (int|char) <var>::={*} identificador {‘[‘ número ‘]’} Símbolos terminales: signed, unsigned, int, char, identificador, número, ‘[‘, ‘]’, ‘,’ Símbolos no terminales: <dec>, <tipo>, <var> Símbolo inicial: <dec> Secuencias válidas: int a,**b[3][4]; unsigned char *p; signed char str[100];

Diagramas Sintácticos No Terminal Diagrama sintáctico de un símbolo no terminal No Terminal Símbolo no terminal Terminal Símbolo Terminal Ejemplo: <sumas>::= número {+ número} sumas número número +

Ejemplo Diagramas sintácticos para expresiones aritméticas. expresión término + término - término factor * factor / factor - identificador factor número ) ( expresión

Tabla de símbolos (identificadores). El compilador utiliza la Tabla de Símbolos para llevar un seguimiento de los identificadores (constantes, variables, funciones, métodos, tipos) que aparecen en el programa fuente. Se examina la Tabla de Símbolos cada vez que se encuentra un identificador. La Tabla de Símbolos es después del árbol de análisis sintáctico la principal estructura de datos de un compilador. La Tabla de Símbolos interacciona con el analizador léxico y con el analizador sintáctico para introducir o consultar información en el proceso de la compilación. También interacciona con el análisis semántico, comprobación de tipo y con el módulo de generación de código. La información que se introduce en la tabla de símbolos depende del lenguaje. Oscar Bonilla 19 Universidad Galileo

Proceso de compilación y Tabla de símbolos. Oscar Bonilla 20 Universidad Galileo

Tabla de símbolos (identificadores). La estructura de datos puede ser en forma de Listas lineales ya que es fácil de implementar cuando el número de entradas es grande. Normalmente las entradas se insertan en orden en que aparecen. Así, si buscamos desde atrás, cuando aparezca un identificador en el programa y lo busquemos en la Tabla de Símbolos nos encontraremos primero con el que ha sido mas cercano. Oscar Bonilla 21 Universidad Galileo

Practica #9 Hacer una La Tabla de identificadores como una lista enlazada para los siguientes identificadores de java con salida a PDF: