ANÁLISIS SINTÁCTICO I GRAMÁTICAS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ANÁLISIS SINTÁCTICO I GRAMÁTICAS"

Transcripción

1

2 Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público y en general cualquier otra forma de explotación de toda o parte de la misma. La utilización no autorizada de esta obra, así como los perjuicios ocasionados en los derechos de propiedad intelectual e industrial de la Universidad Europea de Madrid, S.L.U., darán lugar al ejercicio de las acciones que legalmente le correspondan y, en su caso, a las responsabilidades que de dicho ejercicio se deriven. 2

3 Índice Presentación 4 Introducción 5 Gramáticas independientes del contexto 7 Árboles de derivación 9 Qué es una derivación? 9 Qué es un árbol de derivación? 9 Ejemplo de árbol de derivación 11 Limpieza de gramáticas 15 Símbolos superfluos 15 Símbolos inaccesibles 15 Orden de limpieza de gramáticas 16 Ambigüedades 18 Eliminar la recursividad a izquierdas 18 Eliminar varias alternativas que comienzan igual 18 Gramáticas ambiguas 20 Precedencia y asociatividad 21 El problema del else ambiguo 23 Resumen 25 3

4 Presentación El objetivo de este tema es aprender a diseñar gramáticas a partir de un conjunto de reglas que estas deben cumplir. Para ello, vamos a ampliar algunos conceptos necesarios para las gramáticas tipo 2 de la jerarquía de Chomsky, a la vez que se revisan conceptos sobre ambigüedades vistos anteriormente. También es importante aprender a validar una sentencia para saber si pertenece a una gramática determinada o no, además de aprender a reconocer cuándo una gramática no está limpia y qué orden hay que seguir para limpiarla. Los objetivos a conseguir en este tema son: Entender la motivación de las Gramáticas Independientes del Contexto (GIC). Conocer el funcionamiento de los árboles de derivación. Cómo limpiar una gramática. Cuál es el orden de limpieza de gramáticas. Identificar las ambigüedades y las gramáticas ambiguas. Conocer los conceptos de precedencia y asociatividad. El problema del else ambiguo. 4

5 Introducción Es importante dominar conceptos como qué es una gramática, cómo se especifica de una manera formal, qué es el lenguaje generado por una gramática, los tipos de gramáticas que existen (jerarquía de Chomsky) para construir los conceptos que veremos en este tema. También necesitamos conceptos como el de token o componentes léxico junto con el de las expresiones regulares (gramáticas tipo 3 de la jerarquía de Chomsky). La manera formal de describir una gramática es mediante cuatro términos: el alfabeto de los símbolos terminales ( T), el alfabeto de los símbolos no terminales ( N), el axioma o símbolo inicial de la gramática (S) y un conjunto de producciones (P). Se denota mediante G = { T, N, S, P}, y su forma de representarla es mediante la notación denominada Forma de Backus-Naur (notación BNF), como vemos en la siguiente producción E E + E, donde el único símbolo terminal es +, el no terminal es E, que a su vez es el axioma de la gramática. La independencia de una gramática respecto del contexto También es importante validar que esa gramática es capaz de reconocer sentencias del lenguaje que se ha definido previamente, y para ello utilizamos unas estructuras denominadas árboles de derivación o árboles sintácticos. Por todo lo anterior, las gramáticas nos proporcionan las siguientes ventajas (Aho et al, 1986): 1. Proporcionan una especificación sintáctica precisa y fácil de entender de un lenguaje de programación. 2. A partir de algunas clases de gramáticas, se puede construir automáticamente un analizador sintáctico eficiente que determine si un programa fuente está sintácticamente bien formado o no. 3. Imparte una estructura a un lenguaje de programación útil para la traducción de programas fuente a código objeto correcto y para la detección de errores. 4. Se pueden añadir mejoras al lenguaje fácilmente. 5

6 En detalle La independencia de una gramática respecto del contexto Principalmente, debemos ser capaces de construir una gramática a partir de la especificación de un lenguaje y, una vez obtenida, comprobar que no tiene errores ni ambigüedades y dejarla preparada para su utilización por un analizador sintáctico. Para ello, debemos saber distinguir cuándo una gramática es independiente del contexto (gramáticas tipo 2 de la jerarquía de Chomsky) y cuándo no lo es. 6

7 Gramáticas independientes del contexto Una gramática independiente del contexto (GIC) es una especificación para la estructura sintáctica de un lenguaje de programación (Louden, 2004). Dependiendo del autor, también se las denomina gramáticas libres de contexto. Por qué se llaman independientes del contexto? Un ejemplo de gramática tipo 1 es el siguiente: abc ajc, donde para transformar B en J, tienen que tener a su izquierda a y a su derecha c, por tanto tienen que tener una parte común, es decir, importa el contexto puesto que dependen de él. En las GIC, la parte izquierda de las producciones solo pueden tener un símbolo no terminal y para transformar una palabra en otra, el símbolo no terminal que se sustituye no depende de lo que haya a su izquierda o a su derecha. Un ejemplo de producción puede ser: A Bc. Otro ejemplo de producción podría ser A Bc abd. A las producciones de la gramática también se les denomina reglas gramaticales. Notación BNF Veamos otro ejemplo mas concreto. Una declaración de variables está formada por el tipo de la variable y las variables, que pueden ser una variable o varias (una lista de identificadores), es decir uno o varios identificadores. Los tipos de las variables pueden ser enteros (int), reales (real) o de tipo caracter (char). Cómo lo especificamos en esta notación? La declaración la sustituimos por el no terminal D, las variables por el no terminal V y los tipos posibles por el no terminal T. Los tipos posibles serán int, real o char. Resultado 7

8 En detalle Por qué se llaman independientes del contexto? Son las gramáticas tipo 2 de la jerarquía de Chomsky y se denominan independientes del contexto, en contraposición con las de tipo 1, que se denominan dependientes del contexto o sensibles al contexto. Algunos autores a las gramáticas de tipo 1 las denominan gramáticas de contexto libre, que es justo lo contrario de lo que significan. Ejemplo Notación BNF Para especificar esta última producción hemos utilizado la notación BNF, en la que el primer símbolo es un no terminal (A) que es el nombre de la estructura o producción, el segundo símbolo es el metasímbolo " " y este símbolo viene seguido por una cadena de símbolos que pueden ser: No terminales (en este caso B, puesto que establecimos un convenio por el que las letras mayúsculas representaban no terminales). Símbolos terminales (o símbolos del alfabeto y se representan mediante letras minúsculas, en esta producción c). El metasímbolo " ", indicando que hay otra alternativa. En detalle Resultado D T V. T int real char. V id; id, V. Nota1: El punto y coma ";" y la coma "," son terminales, al igual que int o id. Nota 2: Es importante entender el concepto de recursividad que encierra la producción V id, V. La recursividad es una característica esencial de las GIC y nos permite expresar el concepto de un identificador seguido de uno o más identificadores. Este concepto de recursividad no lo hubiéramos podido expresar con una expresión regular. 8

9 Árboles de derivación Ahora necesitamos validar que una sentencia pertenece a esta gramática y para ello necesitamos una herramienta denominada árbol de derivación o árbol de análisis sintáctico. Qué es una derivación? Se representa por x ==> y y es la aplicación de una regla de producción a b a una cadena x para convertirla en otra cadena o palabra y. En el ejemplo anterior, partiendo de D T V, si aplicamos la producción T int, se deriva directamente D int V. Es importante entender que decimos directamente porque es lo que se obtiene a partir de la aplicación directa de la producción T int. Cuando lo que se aplica es una secuencia de producciones a una cadena se representa por x ==>* y, queriendo indicar que llegamos a otra cadena en más de un paso. En el ejemplo anterior, D T V ==>* int a, b, c;, y realizamos, por tanto, derivaciones en más de un paso para obtener la cadena final. Derivaciones por la izquierda y la derecha Qué es un árbol de derivación? Es una representación utilizada para describir el proceso de derivación de una sentencia, donde se cumple lo siguiente: La raíz del árbol es el símbolo inicial de la gramática. Los nodos intermedios del árbol son los no terminales de las producciones que se utilizan. Estos nodos intermedios tendrán tantos hijos como elementos tenga el lado derecho de la producción. Los nodos hoja serán los terminales. Ejemplo de representación 9

10 En detalle Derivaciones por la izquierda y la derecha Las derivaciones se pueden realizar empezando por el símbolo no terminal que está más a la izquierda de la cadena, y a estas derivaciones se las denomina derivación por la izquierda, o bien se pueden hacer sustituciones en la cadena inicial empezando por el símbolo no terminal que está mas a la derecha y a estas derivaciones se las denomina derivaciones por la derecha. Dependiendo de cuál escojamos se obtiene un resultado u otro. Gráfico Ejemplo de representación Un ejemplo de representación se ve en la siguiente figura: 10

11 Ejemplo de árbol de derivación El objetivo principal de un árbol de derivación, también denominado árbol sintáctico, es representar una sentencia del lenguaje y validar de esta forma que pertenece o no a la gramática. Sentencia para la gramática de declaración de variables Para validar esta sentencia vamos a hacer derivaciones por la izquierda, que puedes observar paso a paso en el modelo interactivo o conjuntamente en el documento adjunto: 11

12 12

13 Derivaciones Conclusión En detalle Sentencia para la gramática de declaración de variables Supongamos la siguiente sentencia para la gramática de declaración de variables de la gramática que ya hemos utilizado anteriormente: int a, b; D T V. T int real char. V id; id, V. 13

14 En detalle Conclusión Como vemos por los sucesivos pasos, se ha reconocido la sentencia, puesto que ha ido aplicando sustituciones de la gramática a partir del nodo raíz, pasando por los nodos intermedios para llegar a los nodos hoja y hemos obtenido todos los terminales que componen la sentencia que queremos reconocer. 14

15 Limpieza de gramáticas Las gramáticas que nos permiten definir lenguajes de programación están formadas por una gran cantidad de reglas en notación BNF, que pueden contener errores (porque no son necesarias, o tienen símbolos superfluos o innecesarios). Al proceso de corregir la gramática se le denomina "limpieza de la gramática". El objetivo es que tanto los símbolos como las reglas que se utilizan en la gramática sirvan para algo. Hay dos tipos de errores que se cometen con los símbolos: símbolos superfluos y símbolos inaccesibles. Símbolos superfluos Depende del conjunto al que pertenezcan (terminales o no terminales) Símbolo no terminal superfluo Es aquel del que se derivan palabras que no contienen ningún terminal. Símbolo terminal superfluo Es aquel que no puede ser alcanzado por derivación desde el axioma. Símbolos inaccesibles Son aquellos símbolos no terminales que no pueden ser alcanzados por derivaciones desde el axioma de la gramática. Hay tres tipos de errores que se cometen con las reglas que no generan derivaciones útiles: reglas innecesarias, reglas no generativas y reglas de redenominación. Reglas innecesarias Son reglas del tipo A A, donde A pertenece a los no terminales. Reglas no generativas Son reglas del tipo A λ, cuando A es distinta de S (el axioma de la gramática). Reglas de redenominación Son reglas del tipo A B, donde tanto A como B pertenecen a los no terminales. 15

16 Orden de limpieza de gramáticas Una gramática está bien formada si: Está limpia. Sin reglas no generativas (A λ). Sin reglas de redenominación (A B). Gramática 1. No hay reglas innecesarias. Conclusiones sobre la gramática 2. Los símbolos Y y V son inaccesibles, puesto que no podemos llegar a ellos mediante derivaciones desde el axioma de la gramática (X). 3. El símbolo Z es un símbolo no terminal superfluo Z Za, puesto que cuando se hagan derivaciones siempre aparece el propio símbolo Z. 4. Los símbolos c y d son símbolos terminales superfluos. 5. No hay reglas no generativas. 6. La regla V Y es una regla de redenominación (este error es muy común). Para limpiar esta gramática eliminamos tanto los símbolos inaccesibles y superfluos como las producciones en las que estos aparecen. Lo mismo se hace con las reglas innecesarias, y con ambas eliminaciones no se altera el lenguaje generado por la gramática. Limpieza de la gramática Objetivo Gramática limpia Sin reglas innecesarias (A A). Sin símbolos inaccesibles. Sin símbolos superfluos. 16

17 Ejemplo Gramática G: ({a, b, c, d},{x, Y, V, W, Z}, X, P}, donde P está compuesto por las siguientes reglas o producciones. X Wa Zba λ. Y ava. V Y. W bx. Z Za. En detalle Limpieza de la gramática Si limpiamos esta gramática nos queda G: ({a, b, },{X, W}, X, P} X Wa Zba λ. Y ava. V Y. W bx. Z Za. Obteniéndose finalmente: X Wa λ. W bx. Reflexión Objetivo El objetivo no es tanto dominar los algoritmos de limpieza de gramáticas, sino reconocer los errores y no cometerlos cuando diseñemos una gramática. 17

18 Ambigüedades Una gramática es ambigua si permite construir dos o más árboles de derivación distintos para la misma cadena. Es importante saber reconocer en una gramática los dos tipos fundamentales de ambigüedades que nos interesa eliminar: 1. Recursividad por la izquierda. 2. Varias alternativas de una sentencia comienzan igual. Eliminar la recursividad a izquierdas Partimos de la siguiente producción A Aα β, donde tanto α como β representan conjuntos de terminales y no terminales. Regla a aplicar Resultado Eliminar varias alternativas que comienzan igual A esto se le llama factorizar y se resuelve de la siguiente forma: puesto que parte de alternativas de una producción que comienzan igual, tenemos que determinar la parte común más larga entre estas alternativas y a partir de ahí se sustituye por un no terminal que actuará de discriminante. Si tenemos A α β 1 α β2... α βn θ, donde θ representa otras alternativas que no comienzan con α, se hace lo siguiente: A α A θ. A β1 β2... βn. Ejemplo: V id; id, V donde la parte común, α, es igual a id. Por tanto, aplicando la regla anterior: V id A. A ;, V. En detalle Regla a aplicar A Aα β La regla a aplicar es la siguiente: A β A. A α A λ. 18

19 Ejemplo Resultado Ejemplo: V V, T T, donde α =, T y β = T. Por tanto el resultado sería: V T V. V, TV λ. 19

20 Gramáticas ambiguas Una gramática es ambigua cuando para reconocer una sentencia podemos utilizar más de un árbol sintáctico. Es interesante destacar que esta ambigüedad se produce si reconoce al menos una sentencia ambigua. Veamos el caso de una gramática diseñada para reconocer operaciones aritméticas mediante expresiones, donde estas expresiones se sustituyen por el no terminal E y donde para una sentencia dada (en este caso: 4 + x * 3) obtenemos más de un árbol de derivación: E E + E E - E E * E E / E ( E ) num id. Árbol 1 Árbol 2 Ambigüedad de la gramática En detalle Ambigüedad de la gramática Usando la lógica aprendida en matemáticas, el árbol válido es el árbol 1, puesto que tiene en cuenta la precedencia del signo de multiplicar sobre el de suma, por lo que hace la multiplicación x*3 y después le suma el 4. En cualquier caso, con la gramática que tenemos esto no está resuelto por lo que el árbol 2 es tan válido como el árbol 1, reflejando que la gramática es ambigua. Es importante destacar que no todas las ambigüedades se resuelven sintácticamente y debe ser el analizador semántico mediante controles semánticos el que las resuelva. 20

21 Precedencia y asociatividad Como hemos visto en la anterior pantalla, el problema de esa gramática era de precedencia de operadores, es decir, qué operador debe ser evaluado antes para que la operación tenga sentido desde el punto de vista matemático. Hay varias soluciones a este problema de prioridad a la hora de seleccionar las operaciones y, por tanto, los operadores. Cascada de precedencia (Louden, 2004) Se agrupan los operadores en diferentes niveles de precedencia. Al colocarlos en la gramática más cerca del axioma de la gramática (en definitiva más cerca de la raíz del árbol de análisis) obtienen una precedencia menor. De forma explícita en el analizador sintáctico Los generadores de análisis sintáctico tienen directivas para definir la precedencia de los operadores. Como nos indica Luengo Díez et al (2005), el orden de precedencia de mayor a menor precedencia: 1. Los paréntesis ( ). 2. Menos unario (-). 3. Potenciación (^). 4. Multiplicación (*) y división (/). 5. Suma (+) y resta (-). Por asociatividad entendemos la forma en que los operadores agrupan a los operandos para hacer las operaciones. Es útil cuando los operadores tienen la misma precedencia y hay que seleccionar que operación se hace primero. Asociatividad por derecha e izquierda Utilizando de una forma apropiada estas dos propiedades, precedencia y asociatividad, podemos conseguir que una gramática ambigua, como la que hemos utilizado en el ejemplo (gramática de operadores) se convierta en no ambigua. 21

22 En detalle Asociatividad por derecha e izquierda Se habla de asociatividad por la izquierda para los operadores suma (+), resta (-), multiplicación (*) y división (/), mientras que para la potenciación (^) o para el signo de igualdad (=) la asociatividad es por la derecha. En el ejemplo , en el que los dos operadores tienen la misma precedencia, primero se hace la suma puesto que es asociativa por la izquierda (3+2) y posteriormente se hace la resta (5-5). 22

23 El problema del else ambiguo Veamos la siguiente gramática, utilizada por el lenguaje de programación C y que produce una ambigüedad a la hora de decidir a que if está asociado un else determinado: Supongamos la siguiente sentencia de entrada, a la que vamos a añadir subíndices a los no terminales para que sea mas fácil identificarlos: if C1then if C2then S1else S2. En el árbol 1 el else lo hemos asociado con el if más cercano, mientras que en el árbol 2 lo hemos asociado con el primer if. Dependiendo del lenguaje de programación, esto se resuelve de una manera o de la otra, aunque la mayoría de los lenguajes utilizan el primer árbol, donde el else se empareja con el if más cercano. Cómo lo resolvemos? 23

24 Ambigüedad de la gramática sentencia sentencia-if otras-sentencias. sentencia-if if condición then sentencia. if condición then sentencia else sentencia. En negrita están los terminales de la gramática, y el resto son no terminales, donde condición será una expresión booleana (valdrá 0 o 1) y sentencia será al menos una sentencia seguida de cero o más sentencias. Utilizando las convenciones que hemos adoptado la gramática quedaría: S S-if O-S. S-if if C then S. if C then S else S. En detalle Cómo lo resolvemos? Se pueden utilizar llaves para agrupar los if con sus else correspondiente o bien se pueden utilizar palabras reservadas. La utilización de palabras reservadas la hace Ada, añadiendo end if, lo que permite saber dónde acaba y dónde empieza una sentencia if, quedando la gramática de la siguiente forma: sentencia-if if condición then sentencia end if. if condición then sentencia else sentencia end if. 24

25 Resumen En este tema hemos aprendido con algunos ejemplos a definir una GIC, distinguiéndola de otros tipos de gramáticas, además de a reconocer cuándo esta gramática no está limpia y en qué orden debería limpiarse o si contiene ambigüedades. Una vez sabemos reconocer estos problemas, también aprendemos a corregir problemas de recursividad a izquierdas o de múltiples alternativas que comienzan igual en una regla o producción (factorización). En el caso de las gramáticas "sucias", hemos aprendido a reconocer los símbolos superfluos, tanto terminales como no terminales e inaccesibles, así como las reglas innecesarias, no generativas o de redenominación. Más adelante hemos aprendido a tratar con gramáticas ambiguas y a detectar esa ambigüedad al obtener más de un árbol de derivación para una sentencia. También vimos conceptos como la derivación por la izquierda y por la derecha. Por otro lado, hemos entendido los conceptos de precedencia y asociatividad, y cómo pueden resolver problemas de ambigüedad en las gramáticas de operadores. Para finalizar hemos visto un ejemplo de un problema concreto que tienen algunos lenguajes antiguos, como es el del else ambiguo y cómo se puede corregir. 25

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013 Compiladores Análisis Sintáctico Ascendente Adrian Ulises Mercado Martínez Facultad de Ingeniería, UNAM 5 de septiembre de 2013 Adrian Ulises Mercado Martínez (FI,UNAM) Compiladores 5/07/2013 1 / 34 Índice

Más detalles

ANÁLISIS SINTÁCTICO I ANÁLISIS SINTÁCTICO DESCENDENTE LL(1)

ANÁLISIS SINTÁCTICO I ANÁLISIS SINTÁCTICO DESCENDENTE LL(1) Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

ANÁLISIS LÉXICO EXPRESIONES REGULARES

ANÁLISIS LÉXICO EXPRESIONES REGULARES Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA) Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 2) 2007 1 Derivaciones El proceso de búsqueda de un árbol sintáctico para una cadena se llama análisis sintáctico. El lenguaje generado

Más detalles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.

Más detalles

ANÁLISIS LÉXICO AUTÓMATAS FINITOS

ANÁLISIS LÉXICO AUTÓMATAS FINITOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

ANÁLISIS SINTÁCTICO II LR1

ANÁLISIS SINTÁCTICO II LR1 Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

ANÁLISIS SINTÁCTICO II SLR

ANÁLISIS SINTÁCTICO II SLR Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en

Más detalles

ANÁLISIS SINTÁCTICO II LALR

ANÁLISIS SINTÁCTICO II LALR Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

LENGUAJES Y GRAMÁTICAS

LENGUAJES Y GRAMÁTICAS LENGUAJES Y GRAMÁTICAS Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 20 de septiembre de 2008 Contenido Lenguajes y Gramáticas Gramáticas Gramáticas

Más detalles

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3. UNIVRSIDAD NACIONAL D DUCACIÓN A DISTANCIA scuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte I Análisis Sintáctico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

TEMA 6 GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO

TEMA 6 GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO TEMA 6 GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO TEMA 6.- GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO 6.1. Gramáticas independientes del contexto. 6.2. Limpieza de Gramáticas Independientes del contexto. 6.3.

Más detalles

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN G r a m á t i c a s UNIVERSIDAD DE SONORA DEPARTAMENTO DE MATEMÁTICAS LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN Dra. María de Guadalupe Cota Ortiz Lenguaje

Más detalles

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 1) 1 Aspectos Formales Los compiladores traducen lenguajes que están formalmente definidos a través de reglas que permiten escribir

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Repaso TALF Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 La Jerarquía de Chomsky Cuatro niveles de lenguajes formales

Más detalles

Gramáticas tipo 0 o Estructura de frase En este tipo de gramáticas no hay restricción en su producciones y tienen la forma siguiente.

Gramáticas tipo 0 o Estructura de frase En este tipo de gramáticas no hay restricción en su producciones y tienen la forma siguiente. Gramáticas Libres de Contexto 1. Gramáticas. Como vimos en el capítulo anterior una gramática es un conjunto finito de reglas que describen todas las secuencias de símbolos que pertenecen a un lenguaje.

Más detalles

ANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS

ANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente 2 Contenido Clasificación de métodos de análisis sintáctico Análisis descendente Análisis descendente recursivo Análisis descendente predictivo Métodos deterministas Problemas del análisis descendente

Más detalles

ANÁLISIS SINTÁCTICO II GENERADOR DE ANALIZADORES SINTÁCTICOS ASCENDENTES

ANÁLISIS SINTÁCTICO II GENERADOR DE ANALIZADORES SINTÁCTICOS ASCENDENTES Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

ANÁLISIS LÉXICO CONCEPTOS BÁSICOS DEL ANÁLISIS LÉXICO

ANÁLISIS LÉXICO CONCEPTOS BÁSICOS DEL ANÁLISIS LÉXICO Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto

Más detalles

Escuela Normal Superior N 40 Mariano Moreno. Cuadernillo Propedéutico 2017 Nivel Superior

Escuela Normal Superior N 40 Mariano Moreno. Cuadernillo Propedéutico 2017 Nivel Superior Escuela Normal Superior N 40 Mariano Moreno Cuadernillo Propedéutico 2017 Nivel Superior INDICE Página Datos 1 Tipos de Datos 2 Variables 3 Constantes 4 Operadores y Expresiones 5 Algoritmos - Algoritmos

Más detalles

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas Guía Modelos de Computación Tema I: Lenguajes y Gramáticas Introducción La sintaxis de un lenguaje natural, esto es, la de los lenguajes hablados, como el inglés, el español, el alemán o el francés, es

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

Proyecto Intermedio Algoritmo de Earley

Proyecto Intermedio Algoritmo de Earley Fundamentos de Computación Proyecto Intermedio: Algoritmo de Earley Profesor: Dr. José Torres Jiménez Alumnos: Edna Gutiérrez Gasca Aureny Magaly Uc Miam Jorge Rodríguez Núñez Proyecto Intermedio Algoritmo

Más detalles

YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator

YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator 1 INDICE 1. Introducción 2. Especificaciones 3. Ambigüedad y conflictos 4. Tratamiento de errores 5. Uso con el LEX 6. Algunos consejos prácticos

Más detalles

Analizador Sintáctico Ascendente

Analizador Sintáctico Ascendente Analizador Sintáctico Ascente Un Analizador Sintáctico (A. St.) Ascente construye el árbol desde las hojas hacia la raíz. Funciona por reducción-desplazamiento, lo cual quiere decir que, siempre que puede,

Más detalles

Teoría de Autómatas y Lenguajes Formales.

Teoría de Autómatas y Lenguajes Formales. Teoría de Autómatas y Lenguajes Formales Prueba de Evaluación de Lenguajes y Gramáticas Autores: Araceli Sanchis de Miguel Agapito Ledezma Espino Jose A. Iglesias Martínez Beatriz García Jiménez Juan Manuel

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Á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

Más detalles

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas Gramáticas Introducción Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas En algunos lenguajes, una sucesión de símbolos depende del

Más detalles

Bloque 1. Aritmética y Álgebra

Bloque 1. Aritmética y Álgebra Bloque 1. Aritmética y Álgebra 3. Los números racionales 1. Los números racionales o fraccionarios Fracción es una o varias partes iguales en que dividimos la unidad. Las fracciones representan siempre

Más detalles

Las Gramáticas Formales

Las Gramáticas Formales Definición de Las Como definir un Lenguaje Formal Universidad de Cantabria Esquema Motivación Definición de 1 Motivación 2 Definición de 3 Problema Motivación Definición de Dado un lenguaje L, se nos presenta

Más detalles

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero

Más detalles

Introducción. El uso de los símbolos en matemáticas.

Introducción. El uso de los símbolos en matemáticas. Introducción El uso de los símbolos en matemáticas. En el estudio de las matemáticas lo primero que necesitamos es conocer su lenguaje y, en particular, sus símbolos. Algunos símbolos, que reciben el nombre

Más detalles

TEMA 3. Algebra. Teoría. Matemáticas

TEMA 3. Algebra. Teoría. Matemáticas 1 1 Las expresiones algebraicas Las expresiones algebraicas son operaciones aritméticas, de suma, resta, multiplicación y división, en las que se combinan letras y números. Para entenderlo mejor, vamos

Más detalles

Gramáticas libres de contexto

Gramáticas libres de contexto Gramáticas libres de contexto Conceptos básicos El siguientes es un ejemplo de una gramática libre de contexto, a la cual llamaremos G1. A 0A1 A B B # Una gramática consiste de una colección de reglas

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2. UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 2 Análisis Léxico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos del Tema

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Gramáticas Regulares Expresiones Regulares Gramáticas - Intuitivamente una gramática es un conjunto de reglas para formar correctamente las frases de un lenguaje - Por ejemplo,

Más detalles

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1 Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.

Más detalles

Práctica 3 Introducción al Manejo de Bison

Práctica 3 Introducción al Manejo de Bison Práctica 3 Introducción al Manejo de Bison Tareas 1. Estudia la sección sobre Bison en el documento Intro_Flex_Bison.pdf (página 10 a nal) y descarga el manual de Bison como soporte para consultas (bison.pdf).

Más detalles

Clase 15: GLC s limpias y bien formadas

Clase 15: GLC s limpias y bien formadas Clase 15: GLC s limpias y bien formadas Solicitado: Ejercicios 12: GLC s Limpias y bien formadas M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom edfrancom@ipn.mx

Más detalles

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos

Más detalles

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3) Definición de la sintaxis (1) Gramática independiente del contexto: tiene cuatro componentes: Un conjunto de componentes léxicos, denominados símbolos terminales. Un conjunto de no terminales. Un conjunto

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Tema: Análisis Semántico

Tema: Análisis Semántico Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador

Más detalles

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis léxico Formalización y desarrollo Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012 Coordinación de Ciencias Computacionales INAOE Teoría de Autómatas y Lenguajes Formales Temario detallado para examen de ingreso 2012 1. Autómatas 1.1. Por qué estudiar la teoría de autómatas? 1.1.1. Introducción

Más detalles

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES 1 DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES Los LENGUAJES FORMALES están formados por PALABRAS, las palabras son CADENAS y las cadenas están constituidas por SÍMBOLOS de un ALFABETO. SÍMBOLOS

Más detalles

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades

Más detalles

Gramaticas Independientes del Contexto, ejemplos y ejercicios

Gramaticas Independientes del Contexto, ejemplos y ejercicios OpenStax-CNX module: m16320 1 Gramaticas Independientes del Contexto, ejemplos y ejercicios Carlos Arturo Cortés Fuentes This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

Tema 3 Algebra. Ecuaciones. Sistemas de ecuaciones: Inecuaciones Índice

Tema 3 Algebra. Ecuaciones. Sistemas de ecuaciones: Inecuaciones Índice Tema 3 Algebra. Ecuaciones. Sistemas de ecuaciones: Inecuaciones Índice 1. ECUACIONES... 2 1.1. Ecuaciones de primer grado... 2 1.2. Ecuaciones de segundo grado... 3 1.2.1. Ecuación de segundo grado completa...

Más detalles

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

SSL Guia de Ejercicios

SSL Guia de Ejercicios 1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3.

Más detalles

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe: 09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,

Más detalles

3. Ecuaciones, parte I

3. Ecuaciones, parte I Matemáticas I, 2012-I La ecuación es como una balanza Una ecuación es como una balanza en equilibrio: en la balanza se exhiben dos objetos del mismo peso en ambos lados mientras que en la ecuación se exhiben

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

Introducción a la Lógica y la Computación

Introducción a la Lógica y la Computación Introducción a la Lógica y la Computación Parte III: Lenguajes y Autómatas Clase del 7 de Noviembre de 2014 Parte III: Lenguajes y Autómatas Introducción a la Lógica y la Computación 1/20 Lenguajes Formales

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

CAPITULO 5: GRAMÁTICAS

CAPITULO 5: GRAMÁTICAS CAPITULO 5: GRAMÁTICAS 5.1. GRAMÁTICA EN UN LENGUAJE NATURAL: En un lenguaje natural la estructura de las frases, se describen por medio de una gramática que agrupa las palabras en categorías sintácticas

Más detalles

Introducción a la Lógica y la Computación

Introducción a la Lógica y la Computación Introducción a la Lógica y la Computación Parte III: Lenguajes y Autómatas Clase del 4 de Noviembre de 2015 Parte III: Lenguajes y Autómatas Introducción a la Lógica y la Computación 1/21 Lenguajes Formales

Más detalles

Tema 2: Análisis léxico

Tema 2: Análisis léxico Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis

Más detalles

Lenguajes Incontextuales

Lenguajes Incontextuales Tema 5: Gramáticas Formales Lenguajes Incontextuales Departamento de Sistemas Informáticos y Computación http://www.dsic.upv.es p.1/31 Tema 5: Gramáticas Formales Gramáticas. Tipos de Gramáticas. Jerarquía

Más detalles

CURSO PROPEDÉUTICO 2017

CURSO PROPEDÉUTICO 2017 CURSO PROPEDÉUTICO 2017 1 FUNDAMENTOS DE MATEMÁTICAS OBJETIVO Formar estudiantes altamente capacitados, que cuenten con competencias y conocimientos para construir y utilizar técnicas que contribuyan a

Más detalles

Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas

Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas Unidad III Análisis Léxico M.C. Juan Carlos Olivares Rojas Agenda 3.1 Introducción a los Autómatas finitos y expresiones regulares. 3.2 Analizador de léxico. 3.3 Manejo de localidades temporales de memoria

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. NÚMEROS REALES Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. Un conjunto es una colección bien definida

Más detalles

08 Análisis léxico IV

08 Análisis léxico IV 2 Contenido Expresiones regulares Lenguaje generado por una expresión regular Precedencia de las operaciones con las expresiones regulares Ejemplos Definiciones regulares Extensiones de las expresiones

Más detalles

Tema: Análisis Sintáctico

Tema: Análisis Sintáctico Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis

Más detalles

Compiladores e intérpretes Introducción

Compiladores e intérpretes Introducción Introducción Profesor: Eridan Otto Introducción Perspectiva histórica Motivación Definiciones Componentes y fases de un compilador 1 Introducción Definiciónes básicas Traductor: desde un punto de vista

Más detalles

Compiladores e Intérpretes Análisis Semántico I

Compiladores e Intérpretes Análisis Semántico I 1 Compiladores e Intérpretes Análisis Semántico I Sebastian Gottifredi 2017 Organización Repaso Intuición General del Análisis Semántico Gramáticas de Atributos Funcionamiento Atributos: Sintetizados-Heredados-Intrinsecos

Más detalles

Programación II Sesión 2: Especificación de problemas

Programación II Sesión 2: Especificación de problemas Programación II Sesión 2: Especificación de problemas Diego R. Llanos Ferraris UNED, Centro Asociado de Palencia Nota: Estos apuntes son la guía utilizada por el Profesor Tutor para impartir el seminario

Más detalles

El proceso del Análisis Léxico

El proceso del Análisis Léxico El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente

Más detalles

Uso de la herramienta YACC

Uso de la herramienta YACC 1 Compiladores / Guía VI / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología Uso de la herramienta YACC Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. UNIVERIDAD NACIONAL DE EDUCACIÓN A DITANCIA Escuela Técnica uperior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte II Análisis intáctico Descendente Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

GRAMÁTICAS LIBRES DE CONTEXTO

GRAMÁTICAS LIBRES DE CONTEXTO GRAMÁTICAS LIBRES DE CONTEXTO Definición Una gramática libre de contexto (GLC) es una descripción estructural precisa de un lenguaje. Formalmente es una tupla G=, donde Vn es el conjunto

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda

Más detalles

EXPRESIONES ALGEBRAICAS EXPRESIONES ALGEBRAICAS Y POLINOMIOS

EXPRESIONES ALGEBRAICAS EXPRESIONES ALGEBRAICAS Y POLINOMIOS EXPRESIONES ALGEBRAICAS Trabajar en álgebra consiste en manejar relaciones numéricas en las que una o más cantidades son desconocidas. Estas cantidades se llaman VARIABLES, INCÓGNITAS o INDETERMINADAS

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

Análisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez

Análisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez Análisis Semántico y Traducción Dirigida por la Sintaxis Programación II Margarita Álvarez Análisis Semántico Comprobación estática Comprobación de tipos: la aplicación de los operadores y operandos deben

Más detalles

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

Más detalles

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas. LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.

Más detalles

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal. LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado

Más detalles

Propiedades de lenguajes independientes del contexto

Propiedades de lenguajes independientes del contexto Capítulo 12. Propiedades de lenguajes independientes del contexto 12.1. Identificación de lenguajes independientes del contexto Lema de bombeo. 12.2. Propiedades Cierre, Complemento de lenguajes, Sustitución,

Más detalles

UNIDAD DE APRENDIZAJE I

UNIDAD DE APRENDIZAJE I UNIDAD DE APRENDIZAJE I Saberes procedimentales Interpreta y utiliza correctamente el lenguaje simbólico para el manejo de expresiones algebraicas. 2. Identifica operaciones básicas con expresiones algebraicas.

Más detalles

Identificación de inecuaciones lineales en los números reales

Identificación de inecuaciones lineales en los números reales Grado Matematicas - Unidad Operando en el conjunto de Tema Identificación de inecuaciones lineales en los números reales Nombre: Curso: A través de la historia han surgido diversos problemas que han implicado

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles