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

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

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

Transcripción

1 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 de producciones, en el que cada producción consta de un no terminal, llamado lado izquierdo de la producción, una flecha y una secuencia de componentes léxicos y no terminales, o ambos, llamado lado derecho de la producción. La denominación de uno de los no terminales como símbolo inicial. PL. Un compilador sencillo de una pasada. 2 Definición de la sintaxis (2) Se dice que una producción es para un no terminal si el no terminal aparece en el lado izquierdo de la producción. Una cadena de componentes léxicos es una secuencia de cero o más componentes léxicos. La cadena que contiene cero componentes léxicos, que se escribe ε, recibe el nombre de cadena vacía. De una gramática se derivan cadenas empezando con el símbolo inicial y reemplazando repetidamente un no terminal por el lado derecho de una producción para ese no terminal. La derivación de Y a partir de X se representa por X *Y Las cadenas de componentes léxicos derivadas del símbolo inicial forman el lenguaje que define la gramática. El lenguaje generado por una gramática G se representa por L(G). Definición de la sintaxis (3) Ejemplos lista lista + dígito lista lista dígito lista dígito dígito bloque begin props_opc end props_opc lista_props ε lista_props lista_props ; prop prop PL. Un compilador sencillo de una pasada. 3 PL. Un compilador sencillo de una pasada. 4

2 Definición de la sintaxis (4) Derivación más a la izquierda: cuando las producciones utilizadas en la derivación se aplican siempre a los símbolos más a la izquierda. Derivación más a la derecha: cuando las producciones se aplican a los símbolos más a la derecha. Dos gramáticas G 1 y G 2 se dice que son gramáticas equivalentes, y se representa por G 1 G 2, si generan el mismo lenguaje L(G 1 )=L(G 2 ). Una gramática G se dice que es recursiva en un cierto símbolo no terminal U, cuando existe una forma sentencial de U que contiene a U. U + xuy con x,y (Σ N)* La gramática será recursiva si es recursiva para algún no terminal. Si x=ε se dice que es una gramática recursiva a izquierdas. Si y=ε se dice que es una gramática recursiva a derechas. Definición de la sintaxis (5) Notación BNF: es una forma de escribir las producciones. Las reglas son: 1 Los símbolos terminales se suelen poner en negrita, y los no terminales entre ángulos < > 2 El nexo para la producción es ::= 3 La agrupación de reglas mediante 4 Cero o una vez mediante corchetes [ ] 5 Cero o más veces mediante llaves n+k n 6 Paréntesis para delimitar casos de duda en el uso de los operadores meta-lingüísticos PL. Un compilador sencillo de una pasada. 5 PL. Un compilador sencillo de una pasada. 6 Definición de la sintaxis (6) Diagramas sintácticos (diagramas de trenes, o diagramas de Conway): son construcciones gráficas que permiten presentar la misma información sintáctica que la notación BNF pero de una manera más fácil de interpretar para las personas. No terminal Definición de la sintaxis (7) Árbol de análisis sintáctico: indica gráficamente cómo del símbolo inicial de una gramática deriva una cadena del lenguaje. Si el no terminal tiene una producción XYZ, entonces un árbol de análisis sintáctico puede tener un nodo interior etiquetado con y tres hijos etiquetados con X, Y y Z de izquierda a derecha. Terminal Varias alternativas Cero o más Uno o más X Y Z nálisis sintáctico: proceso de búsqueda de un árbol de análisis sintáctico para una cadena de componentes léxicos. Los árboles de análisis sintáctico representan el análisis sintáctico de los programas fuente y sirven de base para la generación de código. PL. Un compilador sencillo de una pasada. 7 PL. Un compilador sencillo de una pasada. 8

3 Definición de la sintaxis (8) Formalmente, dada una gramática independiente del contexto, un árbol de análisis sintáctico es un árbol con las propiedades siguientes: La raíz esta etiquetada con el símbolo inicial. Cada hoja está etiquetada con un componente léxico o con ε. Cada nodo interior está etiquetado con un no terminal. Si es el no terminal que etiqueta a algún nodo interior y X 1, X 2,..., X n son las etiquetas de los hijos de ese nodo, de izquierda a derecha, entonces X 1 X 2... X n es una producción. quí, X 1, X 2,..., X n representan un símbolo que es un terminal o un no terminal. Como caso especial, si ε, entonces un nodo etiquetado con tiene sólo un hijo etiquetado con ε. Definición de la sintaxis (9) mbigüedad: La ambigüedad puede surgir a varios niveles: en sentencias, lenguajes, y gramáticas. la hora de utilizar eficientemente los lenguajes y gramáticas, es conveniente que no exista ambigüedad, pues provoca que el análisis de las sentencias no sea determinista. Sentencia: una sentencia es ambigua si tiene más de árbol de derivación. Ej: En la gramática G=(1,S, B, 1B, 11, B 1, ) la sentencia 11 puede ser obtenida por las dos derivaciones siguientes: 1B 11 y 11 Gramática: una gramática es ambigua si tiene al menos una sentencia ambigua. Lenguaje: un lenguaje es ambiguo si existe una gramática ambigua que lo genera. Si todas las gramática que generan un lenguaje son ambiguas, el lenguaje es inherentemente ambiguo (ejemplo L=a i b j c k : i=j o j=k). PL. Un compilador sencillo de una pasada. 9 PL. Un compilador sencillo de una pasada. 10 Definición de la sintaxis (10) sociatividad de operadores: Se dice que un operador asocia a la izquierda (derecha) cuando un operando que tenga ese operador a ambos lados es tomado por el operador que este a su izquierda (derecha). Precedencia de operadores: se dice que un operador (*) tiene mayor precedencia que otro (+) si el primero considera sus operandos antes que el segundo. Definición de la sintaxis (11) Utilizando una tabla que muestre la asociatividad y precedencia de operadores se puede construir una gramática para expresiones aritméticas. sociativos por la izquierda +- sociativos por la izquierda */ Se crean dos no terminales expr y término para los dos niveles de precedencia y un no terminal adicional factor para generar unidades básicas en las expresiones. Los no terminales para los operadores de mayor precedencia son los que antes usan las unidades básicas, los de menor precedencia usan a los no terminales de mayor precedencia. expr expr + término expr - término término término término * factor término / factor factor factor dígito ( expr ) PL. Un compilador sencillo de una pasada. 11 PL. Un compilador sencillo de una pasada. 12

4 Traducción dirigida por la sintaxis (1) Definición dirigida por la sintaxis: se trata de una gramática independiente del contexto en la que a cada símbolo no terminal se le asocia un conjunto de atributos y a cada producción un conjunto de reglas semánticas para calcular sus valores. Ejemplo: PRODUCCIÓN REGL SEMÁNTIC expr expr 1 + término expr.t := expr 1.t término.t `+ expr expr 1 - término expr.t := expr 1.t término.t `- expr término expr.t := término.t término 0 término.t := `0 término 1 término.t := ` término 9 término.t := `9 Traducción dirigida por la sintaxis expr.t = (2) expr.t = 9 término.t = 9 expr.t = 95- término.t = 5 término.t = tributos sintetizados: aquellos cuyo valor en un nodo se determina a partir de los valores de los atributos de los hijos de los nodos. Una definición dirigida por la sintaxis no impone ningún orden a la evaluación de atributos en un árbol de análisis sintáctico. Los atributos sintetizados se pueden calcular durante un solo recorrido ascendente del árbol de análisis sintáctico. PL. Un compilador sencillo de una pasada. 13 PL. Un compilador sencillo de una pasada. 14 Traducción dirigida por la sintaxis (3) Esquemas de traducción: es una gramática independiente del contexto en la que se encuentran intercalados, en los lados derechos de las producciones, fragmentos de programa llamados acciones semánticas. Es como una definición dirigida por la sintaxis, con la excepción de que el orden de evaluación de las reglas semánticas se muestra explícitamente. Genera una salida para cada frase x generada por la gramática subyacente mediante la ejecución de las acciones en el orden en que aparecen durante un recorrido en profundidad de un árbol de análisis sintáctico para x. PL. Un compilador sencillo de una pasada. 15 Traducción dirigida por la sintaxis (4) Definición dirigida por la sintaxis simple: cuando la cadena que representa la traducción del no terminal del lado izquierdo de cada producción es la concatenación de las traducciones de los no terminales de la derecha, en igual orden que en la producción. Se pueden implantar con esquemas de traducción en los que las acciones impriman las cadenas adicionales en el orden en que aparecen en la definición. Ejemplo: expr expr 1 + término print(`+ ) expr expr 1 - término print(`- ) expr término término 0 print(`0 ) término 1 print(`1 )... término 9 print(`9 ) PL. Un compilador sencillo de una pasada. 16

5 nálisis sintáctico (1) El análisis sintáctico es el proceso de determinar si una cadena de componentes léxicos puede ser generada por una gramática. Es útil pensar en la construcción de árboles de análisis sintáctico (no siempre es necesario construirlo, sin embargo, un analizador sintáctico deberá poder construir el árbol para garantizar que la traducción sea correcta). La mayoría de los métodos de análisis sintáctico están comprendidos en dos clases, llamadas métodos: DESCENDENTES la construcción se inicia en la raíz y avanza hacia las hojas. es un método popular porque se pueden construir manualmente analizadores sintáctico eficientes. SCENDENTES la construcción se inicia en las hojas y avanza hacia la raíz. puede manejar una clase mayor de gramáticas y esquemas de traducción. las herramientas de software para generar analizadores sintácticos directamente a partir de las gramáticas tienden a utilizar estos métodos. PL. Un compilador sencillo de una pasada. 17 nálisis sintáctico (2) nálisis sintáctico descendente. La construcción descendente de un árbol de análisis sintáctico se hace empezando por la raíz, etiquetada con el no terminal inicial, y realizando de forma repetida los dos pasos siguientes: 1. En el nodo n, etiquetado con el no terminal, selecciónese una de las producciones para y constrúyase los hijos de n para los símbolos del lado derecho de la producción. 2. Encuéntrese el siguiente nodo en el que ha de construirse un subárbol. Para algunas gramáticas, los pasos anteriores se aplican durante un examen sencillo, de izquierda a derecha, de la cadena de entrada. Muchas veces, el componente léxico en curso analizado en la entrada se denomina símbolo de preanálisis. Inicialmente el símbolo de preanálisis es el primero, es decir, el componente léxico situado más a la izquierda de la cadena de entrada. PL. Un compilador sencillo de una pasada. 18 nálisis sintáctico (3) Ejemplo ÁRBOL DE NÁLISIS SINTÁCTICO ENTRD ÁRBOL DE NÁLISIS SINTÁCTICO ENTRD ÁRBOL DE NÁLISIS SINTÁCTICO ENTRD tipo array [ núm puntopunto núm ] of integer tipo array [ simple ] of tipo array [ núm puntopunto núm ] of integer tipo array [ simple ] of tipo array [ núm puntopunto núm ] of integer nálisis sintáctico (4) nálisis sintáctico descendente recursivo: es un método descendente en el que se ejecuta un conjunto de procedimientos recursivos para procesar la entrada. cada no terminal de una gramática se asocia un procedimiento. Un tipo especial de este tipo de análisis es el análisis sintáctico predictivo, en el que el símbolo de preanálisis determina sin ambigüedad el procedimiento seleccionado para cada no terminal. La secuencia de procedimientos llamados en el procesamiento de la entrada define implícitamente un árbol de análisis sintáctico para la entrada. PL. Un compilador sencillo de una pasada. 19 PL. Un compilador sencillo de una pasada. 20

6 nálisis sintáctico (5) procedure parea (t: complex); begin if preanálisis = t then preanálisis:=sigcomplex else error end; procedure simple; begin if preanálisis=integer then begin parea(integer) else if preánalisis=char then begin parea(char); else if preánalisis=num then begin parea(num); parea(puntopunto); parea(num) end else error end; procedure tipo; begin if preanálisis is in integer, char, num then simple else if preanálisis = then begin parea( ); parea(id) end else if preánalisis=array then begin parea(array); parea( [ ); simple; parea( ] ); parea(of); tipo end else error; PL. Un compilador sencillo de una pasada. 21 nálisis sintáctico (6) El análisis sintáctico predictivo depende de la información sobre los primeros símbolos que pueden ser generados por el lado derecho de una producción. Si α es el lado derecho de una producción para el no terminal, se define PRIMERO(α) como el conjunto de componentes léxicos que opere como los primeros símbolos de una o más cadenas generadas a partir de α. Ejemplo: PRIMERO(simple) = integer, char, núm PRIMERO( id) = PRIMERO(array [simple] of tipo) = array En la práctica, muchos lados derechos de una producción comienzan con componentes léxicos, lo que simplifica la construcción de conjuntos PRIMERO. Si hay dos producciones α y β el análisis sintáctico descendente recursivo sin retroceso requiere que PRIMERO(α) y PRIMERO(β) sean disjuntos. PL. Un compilador sencillo de una pasada. 22 nálisis sintáctico (7) Diseño de un analizador sintáctico predictivo. Se tiene un procedimiento para cada no terminal, que hace dos cosas: 1. Decide la producción a utilizar analizando el símbolo de preanálisis: Si está en PRIMERO(α), se usa la producción con lado derecha α. Si hay un conflicto entre dos lados derechos, entonces en esa gramática no se puede emplear este método de análisis sintáctico. Si no está en el conjunto PRIMERO de ningún lado derecho, se usa una producción con ε en el lado derecho. 2. Imitando el lado derecho de la producción, para: Un no terminal: se llama al procedimiento asociado. Un componente léxico que coincide con el símbolo de preanálisis: se lee el siguiente componente léxico. Un componente léxico que NO coincide con el símbolo de preanálisis: se emite un mensaje de error. PL. Un compilador sencillo de una pasada. 23 nálisis sintáctico (8) Recursividad por la izquierda Es posible que un analizador sintáctico descendente recursivo entre en un bucle infinito, si la gramática presenta producciones en las que el símbolo más a la izquierda del lado derecho es el mismo que el no terminal del lado izquierdo. Reescribiendo la producción transgresora, se puede eliminar la producción recursiva a izquierdas. α β β α α α βr R α R ε β α R R α R R α PL. Un compilador sencillo de una pasada. 24 ε

7 Traductor de expresiones simples (1) daptación del esquema de traducción. La técnica de eliminación de recursividad por la izquierda se puede aplicar también a producciones que contengan acciones semánticas. Cuando las acciones semánticas se intercalan en las producciones, se trasladan junto con la transformación. Ejemplo: expr término resto resto + término print(`+ ) resto - término print(`- ) resto ε término 0 print(`0 ) término 1 print(`1 )... término 9 print(`9 ) PL. Un compilador sencillo de una pasada. 25 Un compilador sencillo de una pasada (listado) /* define isdigit */ #include <ctype.h> /* define stderr y fprintf */ #include <stdio.h> int preanalisis; termino() if ( isdigit(preanalisis) ) putchar(preanalisis); parea(preanalisis); main() else error(); preanalisis = getchar(); expr(); putchar('\n'); parea(int t) expr() termino(); resto(); if ( preanalisis == t ) preanalisis = getchar(); else error(); resto() error() if ( preanalisis=='+' ) parea('+'); termino(); putchar('+'); resto(); /* imprime mensaje de error*/ fprint(stderr, else if ( preanalisis=='-' ) parea('-'); termino(); "error de sintaxis\n"); /* y despu'es se detiene */ exit(1); putchar('-'); resto(); else ; PL. Un compilador sencillo de una pasada. 26 nálisis léxico (1) En el siguiente tema se explica en detalle todos los aspectos del análisis léxico. entrada lee carácter reinserta carácter analizador léxico pasa el componente léxico y sus atributos analizador sintáctico Tablas de símbolos (1) Las rutinas de la tabla de símbolos se refieren principalmente a la protección y recuperación de lexemas. Cuando se guarda un lexema, también se guarda el componente léxico asociado con él. Sobre la tabla de símbolos se realizarán las siguientes operaciones: inserta(s,t): Devuelve el índice de la nueva entrada para la cadena s y el compoente léxico t. busca(s): Devuelve el índice de la entrada para la cadena s, o 0 si no encontró a s. El analizador léxico utiliza la operación busca para determinar si hay o no una entrada para un lexema en la tabla de símbolos. Si no existe entrada, entonces utiliza la operación inserta para crear una. PL. Un compilador sencillo de una pasada. 27 PL. Un compilador sencillo de una pasada. 28

8 Máquinas de pila abstracta (1) Una forma común de representación intermedia es el código para una máquina de pila abstracta. La máquina tiene memorias independientes para las instrucciones y los datos, y todas las operaciones aritméticas se realizan con los valores en una pila. Las instrucciones son bastante limitadas y están comprendidas en tres clases: aritmética entera, manipulación de la pila y flujo de control. tope PIL INSTRUCCIONES mete 5 valord 2 + valord 3 *... cp DTOS PL. Un compilador sencillo de una pasada. 29 Máquinas de pila abstracta (2) Instrucciones aritméticas La máquina abstracta ha de implantar cada operador en el lenguaje intermedio. Una operación básica esta soportada directamente. Las complejas, pueden requerir una secuencia de instrucciones. El código de máquina abstracta de una expresión aritmética simula la evaluación de una representación postfija de esa expresión utilizando una pila. Se insertan los operandos en la pila a medida que se encuentran. Cuando se encuentra un operador k-ario, la evaluación aplica el operador a los k valores de la cima de la pila, extrae los operandos e inserta el resultado en la pila. l final, el valor de la cima de la pila será el de la expresión completa. En el lenguaje intermedio, todos los valores serán enteros, donde 0 corresponde a false y los enteros distintos de cero corresponden a true. Los operadores booleanos and y or requieren la evaluación de sus dos argumentos. PL. Un compilador sencillo de una pasada. 30 Máquinas de pila abstracta (3) Manipulación de la pila Este tipo de instrucciones incluye las siguientes: mete v inserta v en la pila valord l inserta el contenido de la posición de datos l valori l inserta la dirección de la posición de datos l saca elimina el valor de la cima de la pila := el valor de lado derecho de la cima se pone en el valor de lado izquierdo que está debajo y se extraen los dos copia inserta una copia del valor de la cima en la pila Valores de lado izquierdo y de lado derecho Los valores de lado derecho suelen considerarse como valores, mientras que los valores de lado izquierdo son posiciones de memoria. Máquinas de pila abstracta (4) Traducción de expresiones La traducción de expresiones al código de la máquina de pila puede hacerse adaptando el traductor de notación infija a notación postfija. Ejemplo: traducción de asignaciones: el valor de lado izquierdo asignado al identificador se inserta en la pila, se evalúa la expresión y su valor de lado derecho se asigna al identificador. prop id := expr prop.t := 'valori' id.lexema expr.t ':=' PL. Un compilador sencillo de una pasada. 31 PL. Un compilador sencillo de una pasada. 32

9 Máquinas de pila abstracta (5) Flujo de control Opciones para la especificación de los destinos de los saltos. 1. El operando de la instrucción da la localidad destino. 2. El operando de la instrucción especifica la distancia relativa, positiva o negativa, del salto. 3. El destino se especifica simbólicamente: la máquina maneja etiquetas. Las instrucciones del flujo de control de la máquina de pila son: etiqueta l destino de los saltos a l; no tiene otro efecto vea l la siguiente instrucción se toma de la proporción etiquetada con etiqueta l sifalsovea l saca el valor del tope de la pila; salta si es cero siciertovea l saca el valor del tope de la pila; salta si es distinto de cero alto detiene la ejecución PL. Un compilador sencillo de una pasada. 33 Máquinas de pila abstracta (6) Traducción de proposiciones IF WHILE etiqueta prueba código de expr sifalsovea etiq código de expr sifalsovea etiq código de prop 1 etiqueta etiq código de prop 1 vea prueba etiqueta etiq prop while expr do prop 1 prueba := etiqnueva; etiq := etiqnueva; prop.t:= 'etiqueta' prueba expr.t 'sifalsovea' etiq prop 1.t 'vea' prueba 'etiqueta' etiq Emisión de una traducción prop while prueba := etiqnueva; emite('etiqueta', prueba); expr etiq := etiqnueva; emite('sifalsovea', etiq); do prop 1 emite('vea', prueba); emite('etiqueta', etiq); PL. Un compilador sencillo de una pasada. 34 Máquinas de pila abstracta (7) procedure prop; var prueba, etiq: integer; /* para las etiquetas */ begin if preanalisis = id then begin emite('valori', valcomplex); parea(id); parea(':='); expr; emite(':='); end else if preanalisis = 'while' then begin parea('while'); prueba:=etiqnueva; emite('etiqueta', prueba); expr; etiq:=etiqnueva; emite('sifalsovea', etiq); parea('do'); prop; emite('vea', prueba); emite('etiqueta', etiq); end /* aquí el código para el resto de las proposiciones */ else error; end; PL. Un compilador sencillo de una pasada. 35

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

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

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

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

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

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

Á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

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

UNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.

UNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido. UNIDAD V Analisis Semantico 5.1 Introduccion Analizador Semántico. Ejemplo: Verifica que el significado de las construcciones del lenguaje tengan sentido. Tareas del analizador semántico: 1) Comprobación

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

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

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

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

Tipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente

Tipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente César Ignacio García Osorio Área de Lenguajes y Siste mas Informáticos Universidad de Burgos Tipos de análisis deterministas. nálisis descendente. La idea es generar una forma sentencial a partir del axioma,

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

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

Tema 5. Análisis semántico

Tema 5. Análisis semántico Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas

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

Examen de Procesadores de Lenguaje

Examen de Procesadores de Lenguaje Apellidos: Nombre: Dni: Examen de Procesadores de Lenguaje Junio de 2007 (2 horas y 45 minutos) Instrucciones Entrega esta hoja, rellenada con tus datos, junto a tu examen cuando lo entregues. Ten en cuenta

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

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

Tema 5: Traducción dirigida por la sintaxis

Tema 5: Traducción dirigida por la sintaxis Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

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

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

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

Unidad I: Análisis semántico

Unidad I: Análisis semántico Unidad I: Análisis semántico 1.1 Arboles de expresiones Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos. Los datos se almacenan en una estructura con forma de árbol.

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

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

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

Lenguaje de programación C. Introducción

Lenguaje de programación C. Introducción Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

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

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 5 UNIVERIDAD NACIONA DE EDUCACIÓN A DIANCIA Escuela écnica uperior de Ingeniería Informática Procesadores de enguajes ema 5 raducción diriga por la sintaxis Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55 Contenido Capítulo 1. Teoría de conjuntos. 1 1.1 Conjuntos.... 3 1.1.1 Definiciones básicas.... 3 1.1.2 Operaciones sobre conjuntos.... 6 1.1.3 Diagrama de Venn.... 7 1.1.4 Álgebra de conjuntos.... 7 1.2

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

Unidad 2. Introducción Lenguajes y Compiladores

Unidad 2. Introducción Lenguajes y Compiladores Unidad 2 Introducción Lenguajes y Compiladores Principal material bibliográfico utilizado Compiladores Principios, técnicas y herramientas. Aho y Ullman. Addison Wesley. www.jorgesanchez.net www.iqcelaya.itc.mx/~vicente/programacion/tradcomp.pdf

Más detalles

Analizador De léxico. V A R i : I N T E G E R ; \n...

Analizador De léxico. V A R i : I N T E G E R ; \n... UNIDAD III Analisis de Lexico 3.1 Analizador de Lexico La tarea del análisis de léxico es reconocer símbolos en un flujo de caracteres y presentarlos en una representación mas util para el análisis sintáctico.

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

Arboles. Definiciones formales: 1) un árbol es un grafo acíclico finito T (P, E) tal que. P = E + 1 => todo arco es desconectante.

Arboles. Definiciones formales: 1) un árbol es un grafo acíclico finito T (P, E) tal que. P = E + 1 => todo arco es desconectante. Arboles Definición: Es una estructura acíclica que, en algún sentido puede ser considerado el siguiente paso en la jerarquía de complejidad estructural. Los árboles tienen son de amplia aplicación en el

Más detalles

Qué es el análisis semántico?

Qué es el análisis semántico? Análisis semántico Estrella Pulido Cañabate Qué es el análisis semántico? Fase del compilador en la que se comprueba la corrección semántica del programa Conjunto de subrutinas independientes que pueden

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

Más detalles

Tema 5 Tabla de Símbolos

Tema 5 Tabla de Símbolos Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores sintácticos descendentes: LL(1) Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 Analizadores sintácticos

Más detalles

Capítulo 5: Traducción Dirigida por Sintaxis

Capítulo 5: Traducción Dirigida por Sintaxis Capítulo 5: Traducción Dirigida por Sintaxis Javier Carvajal Universidad de Costa Rica, Escuela de Ciencias de la Computación e Informática, San José, Costa Rica, francisco.carvajal@ecci.ucr.ac.cr and

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Sentencias de Procesamiento Iterativo: while y do-while

Sentencias de Procesamiento Iterativo: while y do-while ESTRUCTURAS CÍCLICAS Se discuten en este documento las sentencias que se utilizan en el lenguaje C++ para representar la tercera de las estructuras utilizadas en la programación estructurada: La Estructura

Más detalles

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

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

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

Tema 5. Análisis sintáctico ascendente

Tema 5. Análisis sintáctico ascendente Tema 5 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Introducción 5.2 Análisis sintáctico por desplazamiento y reducción 5.3 El autómata reconocedor de prefijos viables

Más detalles

Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo

Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Agenda Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Analizador sintáctico Bottom-Up 1-1 1-2 Introducción Los sistemas de implementación

Más detalles

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Análisis Semántico José M. Castaño Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Compiladores Análisis Léxico Análisis Sintáctico Análisis Semántico Generación Código Intermedio Optimización

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

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería

Más detalles

Tema 7. Generación de código

Tema 7. Generación de código Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión

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

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De

Más detalles

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla.

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla. Procesadores de lenguaje Ejercicios del Tema 3 ANÁLISIS DESCENDENTE Ejercicio 3.1 Compruébese que la siguiente gramática es LL(1) sin modificarla. Ejercicio 3.2 A B C D B a C b B λ C c A d C e B f C g

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

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

Analizadores sintácticos LR(0) y SLR

Analizadores sintácticos LR(0) y SLR Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Clase de Hoy Anteriores: Parsing descendente (LL(1), ELL) Recursivos e iterativos Generan árbol de derivación desde

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. Análizador Sintáctico de abajo hacia arriba Es un proceso de Reducción,

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

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

Capítulo 9. Introducción a los lenguajes formales. Continuar

Capítulo 9. Introducción a los lenguajes formales. Continuar Capítulo 9. Introducción a los lenguajes formales Continuar Introducción Un lenguaje es un conjunto de símbolos y métodos para estructurar y combinar dichos símbolos. Un lenguaje también recibe el nombre

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

Tema: Autómatas de Estado Finitos

Tema: Autómatas de Estado Finitos Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Autómatas de Estado Finitos Contenido En esta guía se aborda la aplicación de los autómatas en el campo de

Más detalles

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Léxico Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análisis Léxico Programa Lenguaje Fuente Análisis Léxico (Token, Lexema)

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

TEMA 3: ANÁLISIS SEMÁNTICO

TEMA 3: ANÁLISIS SEMÁNTICO 1 TEMA 3: ANÁLISIS SEMÁNTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis semántico de un lenguaje? Cómo se diseña y construye un analizador semántico? EL PROBLEMA DEL CÁLCULO

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

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

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Estatutos de Control C# Estatutos de Decisión (Selección)

Estatutos de Control C# Estatutos de Decisión (Selección) SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente

Más detalles

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Compiladores: Generación de Código Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Generación de Código Representación Intermedia Tabla de Símbolos

Más detalles

Tema 3. Análisis sintáctico descendente

Tema 3. Análisis sintáctico descendente Departamento de Tecnologías de la Información Tema 3 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 3.1 Características del análisis sintáctico 3.2 Gramáticas libres de

Más detalles

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas Unidad IV Análisis Sintáctico M.C. Juan Carlos Olivares Rojas Agenda 4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores.

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

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

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

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

Estructuras de Control. Secuencia y Selección

Estructuras de Control. Secuencia y Selección Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de

Más detalles

Universidad de Valladolid

Universidad de Valladolid Universidad de Valladolid Departamento de Informática Teoría de autómatas y lenguajes formales. 2 o I.T.Informática. Gestión. Examen de primera convocatoria. 18 de junio de 29 Apellidos, Nombre... Grupo:...

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones

Más detalles

Análisis Sintáctico Descendente

Análisis Sintáctico Descendente Análisis Sintáctico Descendente p.1/65 Análisis Sintáctico Descendente Tema 4 Juan A. Botía Blaya juanbot@um.es http://ants.dif.um.es/staff/juanbot/traductores/traductores.html Departamento de Ingeniería

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

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

Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos

Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos Profesor Federico Peinado Elaboración del material José Luis Sierra Federico Peinado Ingeniería en Informática

Más detalles

TEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr

TEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Septiembre de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: TEORÍA 1.- Escribir una gramática

Más detalles

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

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011 6, 7 y 13 de abril de 2011 Analizadores sintácticos (repaso) Los analizadores descendentes: Corresponden a un autómata de pila determinista. Construyen un árbol sintáctico de la raíz hacia las hojas (del

Más detalles

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario

Más detalles

OPTIMIZACIÓN DE CÓDIGO

OPTIMIZACIÓN DE CÓDIGO OPTIMIZACIÓN DE CÓDIGO INTRODUCCION La finalidad de la optimización de código es producir un código objeto lo más eficiente posible. En algunos casos también se realiza una optimización del código intermedio.

Más detalles

1. Define que es un Autómatas finitos determinanticos y cuáles son sus elementos constitutivos (explique cada uno de ellos).

1. Define que es un Autómatas finitos determinanticos y cuáles son sus elementos constitutivos (explique cada uno de ellos). Unidad 2.- Lenguajes Regulares Los lenguajes regulares sobre un alfabeto dado _ son todos los lenguajes que Se pueden formar a partir de los lenguajes básicos?, {_}, {a}, a 2 _, por medio De las operaciones

Más detalles

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)

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

Universidad Nacional del Santa Facultad de Ingeniería E.A.P. de Ingeniería de Sistemas e Informática TEORIA DE COMPILADORES ANALISIS SINTACTICO

Universidad Nacional del Santa Facultad de Ingeniería E.A.P. de Ingeniería de Sistemas e Informática TEORIA DE COMPILADORES ANALISIS SINTACTICO ANALISIS SINTACTICO Análisis Sintáctico Descendente Análisis Sintáctico Ascendente EOF y α S (axioma inicial). 2. : la cadena de entrada no es válida. 3. : consiste en aplicar

Más detalles