La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS"— Transcripción de la presentación:

1 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

2 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)

3 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.

4 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

5 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.

6 <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 *

7 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.

8 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.

9 <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>

10 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.

11 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.

12 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.

13 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.

14 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.

15 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 |...

16 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];

17 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 +

18 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

19 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 Universidad Galileo

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

21 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 Universidad Galileo

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


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

Presentaciones similares


Anuncios Google