Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores

Documentos relacionados
GRAMATICAS LIBRES DEL CONTEXTO

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

Procesadores de Lenguaje

Lenguajes y Gramáticas

Lenguajes, Gramáticas y Autómatas Conceptos

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

Matemáticas. ticas Discretas. Lenguajes y Gramáticas. Tenemos dos clases de lenguaje: Lenguaje Formal

En matemáticas el concepto de conjunto es considerado primitivo y no se da una definición de este, por lo tanto la palabra CONJUNTO debe aceptarse

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Sintaxis y Semántica del Lenguaje. Gramáticas

1. Computadores y programación

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

Tema: Autómata de Pila

Expresiones regulares, gramáticas regulares

Autómatas de Pila y Lenguajes Incontextuales

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

Construcción de tablas de análisis sintáctico LL(1)

Ingeniería en Computación. Autómatas y Lenguajes Formales. Unidad de competencia IV: Conocer, utilizar y diseñar gramáticas de libre contexto

Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.

Teoría de la Computabilidad

Computabilidad y Lenguajes Formales: Autómatas Finitos

La sintaxis es el estudio de la estructura de las oraciones, de cómo las palabras se combinan para formar oraciones.

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

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

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

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Inteligencia artificial

Unidad 4. Autómatas de Pila

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

Procesadores de Lenguaje

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.

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

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

Principios de Computadoras II

Temas de Reflexión en el

mi la sol fa si Un conjunto está bien definido si se puede establecer sin dudar si un elemento pertenece o no al conjunto.

Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:

Curso de semántica general

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

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 1: Lenguajes y Gramáticas Formales

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

MATEMÁTICAS II CICLO COMÚN INBAC UNIDAD DIDÁCTICA #5

Ejercicios de Lógica Proposicional *

UNIDAD II: TEORÍA DE CONJUNTOS 2.1. INTRODUCCIÓN

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS.

CONJUNTOS CONJUNTOS NUMÉRICOS

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

PRODUCTO CARTESIANO RELACIONES BINARIAS

Lógica proposicional. Ivan Olmos Pineda

Sistemas Numéricos Cambios de Base Errores

CONJUNTOS Y SISTEMAS NUMÉRICOS

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

Pregunta 1 Es correcta esta definición? Por qué?

UNIDAD 1 GENERALIDADES HTML

2. SEÑALES Y SISTEMAS DISCRETOS EN EL TIEMPO. Una señal puede ser definida como una portadora física de información. Por ejemplo,

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Convertir un AFND a un AFD

Expresiones Regulares y Derivadas Formales

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL MÓDULO 6- CÁLCULO DE PREDICADOS Y LÓGICA DE PRIMER ORDEN

Lic. Manuel de Jesús Campos Boc

Manual de sintaxis del español

{ } Listado de elementos del conjunto

Tema 3. Análisis sintáctico descendente

Cuantificación: Los Cuantificadores y el resto de la oración

Análisis Matemático I: Numeros Reales y Complejos

DERIVADAS PARCIALES Y APLICACIONES

COMUNICACIÓN Y LENGUAJE. EL PROCESO DE COMUNICACIÓN HUMANA.

TEST PARA EVALUACIÓN DE AFASIAS MEMORIZA. Describir la actitud general del paciente (ej. Cooperador, angustia, anosognosia, etc.):

Métodos de Inteligencia Artificial

PROGRAMA INSTRUCCIONAL AUTOMATAS Y LENGUAJES FORMALES

John Venn Matemático y filósofo británico creador de los diagramas de Venn

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

Procesadores de lenguaje Tema Análisis sintáctico (Parte I)

Unidad II: Análisis semántico

Tema 2: Las palabras: el signo lingüístico, los monemas

Las plantillas permiten definir funciones genéricas.

SISTEMA DE NUMEROS REALES

Derivada de la función compuesta. Regla de la cadena


Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

Elementos de un programa en C

ANEXO III 2.º DE EDUCACIÓN SECUNDARIA

Análisis de Algoritmos

LENGUAJE, LENGUA Y HABLA. EL SIGNO LINGÜÍSTICO.

Las Etapas de la Compilación

Teoría de Conjuntos y Conjuntos Numéricos

10.4 Sistemas de ecuaciones lineales

Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales

Qué debo estudiar para realizar la prueba de Comunicación y Lenguaje?

CAPÍTULO II TEORÍA DE CONJUNTOS

Transcripción:

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 comandos correctos. Para un buen estudio de compiladores es necesario conocer los aspectos formales usados en la definición de los lenguajes. El área de Aspectos Formales constituyen normalmente un curso de post graduación por tanto veremos sólo los fundamentos para la mejor comprensión de los lenguajes. 2

Definiciones Alfabeto (A) : Conjunto arbitrario y finito de símbolos de un lenguaje. Ejemplos: El lenguaje de máquina se basa en el alfabeto A = { 0, 1} El sistema decimal se basa en el alfabeto A = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} La lengua inglesa se basa en el alfabeto A = { A, a, B, b, C, c, D, d, E, e,... X,x, Y, y, Z, z} Cada lengua tiene su propio alfabeto, por ejemplo el portugués no tiene el mismo alfabeto que el español (no posee LL, Y) 3

Definiciones Símbolos: Son los elementos del alfabeto. Cadena o palabras: Secuencia finita de símbolos de un alfabeto. Ejemplo: XYZ, CASA son cadenas del alfabeto español y también del inglés pero XYZ no lo es del portugués. Frase: Secuencia de símbolos o cadenas. Ejemplos: Sobre el alfabeto español El río es azul María 4

Definiciones Gramática o Sintaxis: Conjunto de reglas que definen si una frase forma parte del lenguaje (es decir si está correcta o no). Si la frase está correcta entonces será aceptada por el lenguaje. Ejemplos: Considerando las reglas sintácticas del español, frases aceptadas por el lenguaje español : El gato es negro Gato Negro Frases no aceptadas : Está robó el negro el gato 5

Definiciones Para especificar las reglas de la gramática se usan las producciones. Producciones : Son las reglas que definen como generar frases válidas de un lenguaje. Tienen la forma: A B Se lee : A está definido por B ó A puede ser sustituido por B B puede derivarse de A. Normalmente se usan los símbolos y ::= para especificar la transformación que originará las frases del lenguaje. ó 6 *

Definiciones Una producción contiene: Un lado izquierdo (A) que representa la cadena que va a transformarse (Lo que se define). Un lado derecho (B) que representa la cadena resultante de la transformación (La definición). Ejemplo: Oración Sujeto Verbo Predicado ó Oración ::= Sujeto Verbo Predicado N 10 ó N ::= 10 7

Definiciones Símbolos terminales : Son las cadenas que realmente aparecen en una frase. Nunca aparecen del lado izquierdo de una producción. Para la producción N 10 ; 10 es un símbolo terminal. La producción Oración Sujeto Verbo Predicado no tiene símbolos terminales T denota el conjunto de símbolos terminales de un lenguaje. * 8

Definiciones Símbolos no terminales : Conocidos también como categorías sintácticas, no pertenecen a T y deben ser definidos en una producción, es decir deben aparecer por lo menos una vez del lado izquierdo de una producción. Representan los estados intermedios en el proceso de generación de un lenguaje. La producción N 10 ; Define el símbolo no terminal N La producción Oración Sujeto Verbo Predicado Define el símbolo no terminal Oración como Sujeto seguido de un Verbo y luego de un Predicado. 9

Definiciones N denota el conjunto de todos los símbolos no terminales del lenguaje. Para que el lenguaje esté bien definido es necesario que todos los símbolos no terminales tengan su definición en el conjunto de producciones. Podemos decir que un lenguaje L es el conjunto de todas las combinaciones de cadenas que se forman de acuerdo a las reglas gramaticales (conjunto de producciones del lenguaje). S denota el símbolo no terminal inicial, que representa el punto de partida de la gramática. 10

Definiciones El conjunto de producciones (P) define todas las reglas para formación de frases válidas del lenguaje y podemos considerarlo la Gramática de un lenguaje. Cualquier frase válida del lenguaje tiene que ser generada a través del uso de las producciones y se dice que pertenece al lenguaje. Una frase que no es generada por el uso de las producciones o es generada por la aplicación inválida de las producciones, se considera una frase inválida se dice que no pertenece al lenguaje. 11

Definiciones Se podría completar la definición del ejemplo anterior: Sujeto Perro Verbo Ladra Predicado Fuerte Podemos ahora decir que: T = { Perro, Ladra, Fuerte} N = { Oración, Sujeto, Verbo, Predicado } La frase Perro Ladra Fuerte pertenece al lenguaje La frase Ladra Perro Fuerte no pertenece al lenguaje 12

BNF Para compilar un programa escrito en un lenguaje de programación es necesario conocer la definición de ese lenguaje de programación (sintaxis y semántica). Se usa la notación Backus Naur Form (BNF) para especificar la sintaxis de un lenguaje de programación. La notación BNF es en realidad un metalenguaje, es decir un lenguaje para describir otros lenguajes. Un grupo de meta símbolos usados en (dialecto) la notación BNF son: 13

BNF Metasímbolo Significado Se define como O, alternativa [X] Opcionalidad (una o ninguna ocurrencia de X) { X } Número arbitrario de ocurrencias de X (0 o más veces) 14

BNF Ejemplo: Lista Lista + digito Lista - digito digito digito 0 1 2 3 4 5 6 7 8 9 Estas producciones definen un lenguaje. Qué frases son válidas para este lenguaje? Las siguientes frases pertenecen al lenguaje? Cómo se generan? 1 5 + 3-4 5 + 1-0 10 23-6 Qué modificaciones podemos hacer a las producciones para que la frase - 0 sea válida? 15

Otro ejemplo: BNF Entero Signo EnteroSinSigno EnteroSinSigno EnteroSinSigno Digito Digito Signo + - digito 0 1 2 3 4 5 6 7 8 9 Se puede observar que esta definición es recursiva (EnteroSinSigno), lo que permite generar números enteros de un dígito o más. Tarea: prepare la gramática para simple un lenguaje 16

Gramática Formal Una gramática Formal G está definida por una cuádrupla G(T, N, P, S), donde: T es el conjunto de terminales N es el conjunto de no terminales P es el conjunto de producciones S N es el símbolo inicial Cada gramática G caracteriza (genera) un lenguaje, decimos por tanto que un lenguaje formal se asocia a una gramática: L(G) = L(T, N, P, S) 17

Ejemplos Sea G0 = (T, N, P, Cadena) donde T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = { Cadena } P = {Cadena Cadena + Cadena Cadena - Cadena 0 1 2 3 4 5 6 7 8 9 } Frases válidas: 1 + 5 6-4 9 18

Ejemplos Sea G1 = (T, N, P, Entero) donde T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = { Entero, Signo, EnteroSinSigno, Digito} P = {Entero Signo EnteroSinSigno, Signo + -, EnteroSinSigno EnteroSinSigno Digito Digito, Digito 0 1 2 3 4 5 6 7 8 9 } Frases válidas: +10 589 19

Ejemplos Sea G2= (T, N, P, Bloque) donde T = { Begin, End, C, ; } N = { Bloque, Cuerpo, Lista, Comando} P = {Bloque Begin Cuerpo End, Cuerpo Lista ε, Lista Lista; Comando Comando, Comando C } Frases válidas: Begin End Begin C; C End 20

Árboles de derivación o sintácticos Muestra gráficamente como desde el no terminal S se deriva una cadena del lenguaje. Para la producción inicial: A C D F La raíz del árbol sería A con tres hijos C, D y F de izquierda a derecha y luego cada símbolo no terminal n i debe ser sustuido (usando una producción cuyo lado izquierdo sea justamente n i ). El proceso se repetirá en cada nodo del árbol hasta llegar a símbolos terminales (Hojas del árbol) A C D F * 21

Árboles de derivación Para G0 la frase 1 + 5 tiene el siguiente árbol de derivación Cadena Producción Cadena + Cadena 1 5 Frase derivada 22

Árboles de derivación Para G2 la frase Begin C; C End tiene el siguiente árbol de derivación Bloque Cuerpo Begin Lista End Lista ; Comando Comando C C 23

Derivaciones Se dice que una cadena α n se puede derivar de α 0 si y sólo si existe la secuencia de cadenas α 0, α 1, α 2,.. α n tal que cada α i puede derivarse directamente de α i-1 (existe α i-1 α i ): α 0 α 1 α 2. α i-1 α i α n Podemos abreviar con el símbolo * conocido como cerradura transitiva reflexiva de α 0 * α n (α i-1 α i, i = 1, 2,.., n) 24