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

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

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

Transcripción

1 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. Un analizador de lexico lee el programa fuente carácter por carácter y lo descompone en símbolos basicos llamados TOKENS. El analizador de lexico trata por ejemplo de detectar si los caracteres leidos corresponden a una palabra reservada o un identificador, o si es una constante numerica o literal, o si se trata de algun operador, etc. Programa fuente como un flujo de caracteres Analizador De léxico Flujo de símbolos (tokens) Analizador Sintáctico Por ejemplo, un programa fuente como el siguiente: VAR i:integer; BEGIN i :=0; END En realidad es leido como un flujo de caracteres V A R i : I N T E G E R ; \n... Al leer el programa fuente carácter por carácter Cómo reconocer cada componente del lenguaje?, Cómo saber cuándo es una palabra reservada o un identificador o una cantidad numerica?

2 Para diseñar un analizador de léxico se requiere de: 1) Un método para describir los tokens ( expresiones regulares ) 2) Un mecanismo para reconocer los tokens ( autómatas ) 3) Un mecanismo para realizar acciones sobre los tokens reconocidos, por ejemplo generar una salida, poner su valor en tablas, etc. Los analizadores léxicos deben reconocer componentes léxicos (tokens) y estos componentes forman parte de un lenguaje regular. Definiciones Token o componente léxico: Esos son símbolos que se tratan como símbolos terminales de la gramática del lenguaje fuente. Se consideran componentes léxicos: palabras reservadas, operadores, identificadores, constantes numericas, cadenas literales y signos de puntuación como paréntesis y punto y coma. Lexema: Es una secuencia de caracteres en el programa fuente con la que concuerda el patrón para un componente léxico. Patrón: Es una regla que describe el conjunto de lexemas que puede representar a un determinado componente léxico en los programas fuentes. Componente léxico Lexemas de ejemplo Descripción de los lexemas (Token) ( Patrón ) Const Const Const If If If Oprel <,<=,=,>,=> < ó <= ó = ó > ó => Id PI, cuenta, d2, num1 Letra seguida de letras y dígitos Num 0, 64, 1234 Cualquier constante numérica entera. num.num 0.234, , Cualquier constante numerica real. Literal hola muchachas Cualquier carácter entre comillas, excepto 3.2 Introduccion a los Autómatas Finitos y Expresiones Regulares Expresiones Regulares Para describir con precisión los patrones de componentes léxicos complejos tal como identificadores, palabras reservadas, constantes numericas o literales, etc. se usa la notación de expresiones regulares. Las expresiones regulares son una forma compacta de representar un lenguaje regular producido por una gramatica regular o gramatica tipo 3. Tip: Las gramaticas Tipo 2 ( o libres de contexto ) son adecuadas para denotar la secuencia correcta de tokens de una frase o sentencia. En cambio las gramáticas Tipo 3 ( o regulares ) son adecuadas para denotar la estructura de cada token. Una expresión regular se construye a partir de expresiones regulares más simples. Cada expresión regular r representa un token.

3 Una expresión regular hace uso generalmente de tres operadores: a) concatenación: representado por. o nada. b) disyunción: o + c) cerradura transitiva o simplemente cerradura: ( )* o { } Definición de cerradura: Sea A un alfabeto, si utilizamos AA=A 2 para designar todas las cadenas de longitud 2 sobre el alfabeto A. AAA = A 2 A =A 3 para designar las cadenas de longitud 3 en A y en general: A. A. A A = A n-1 A para designar todas las cadenas de longitud n sobre el alfabeto A, entonces la cerradura positiva de A denota A +, se define como: A + = AUA 2 UA 3 U UA n = UA i Para complementar, la cadena vacía se combina con A + para formar la cerradura transitiva de A, denotada por A* y definida como: i=1 A* = U A 1 UA 2 UA 3 UA n = e U A + Ejemplo de cerradura: Considere el conjunto de cadenas A* que puede ser generadas del alfabeto A={x,y}, algunos subconjuntos de A* serian: A 2 = { xx, xy, yx, yy } A 3 = { xxx, xyx, xxy, xyy, yxx, yxy, yyx, yyy } Reglas para expresiones regulares sobre un alfabeto Expresión Regular Lenguaje regular que denota { } Conjunto que contiene solo a la cadena vacía donde V T { α } Conjunto de un solo símbolo: (e 1 ) (e 2 ) siendo e 1 y e 2 son ER L 1 U L 2 (e 1 ) (e 2 ) siendo e 1 y e 2 son ER L 1 L 2 (e 1 )* o {e 1 } L 1 * Ejemplo: Considere el alfabeto = { 0, 1 } Expresión Regular Lenguaje que denota Ejemplos de símbolos 1) 110 L{110} 110 no más 2) 0 1 L{0,1} 0, 1 3) (1)* ó 1* L{1 i i=0,1,2,..}, 1,11,111, ) (0 1)(0 1) o bien L{00,01,10,11} 00,01,10,11 5) (0 1)* L{ x x {0,1}* }, 011, 00, 11, 000, 111, 01, 10, ) (0)* (1)* L{ 0 m 1 n m,n>=0}, 01, 0011, 000, 111.infinito

4 Definiciones regulares Si es un alfabeto de símbolos básicos, entonces una definición regular es una secuencia de definiciones de la forma: d 1 r 1 d 2 r 2 d n r n donde: d i es un nombre distintivo, r i es una expresión regular sobre símbolos de U { d i, d 2,,d n } Ejemplo: Definición regular para denotar a los identificadores Letra -> a b c d z A B Z Digito -> Id -> letra ( letra digito )* La definición regular anterior es mas compacta que utilizar la gramática regular equivalente siguiente: I -> L I -> LA A -> LA A -> DA A -> L A -> D L -> a b c A B C Z D -> Autómatas (Reconocedores) Autómata o reconocedor, también llamado frecuentemente maquina lógica: 1.- Es un modelo formal. 2.- Puede utilizar una notación grafica en forma de diagrama de estados. 3.- Se utilizan para reconocer cadenas o símbolos de un lenguaje. Cadena Reconocedor Si pertenece al lenguaje (Lenguaje Regular) No pertenece al lenguaje Tipos de autómatas: 1. Maquina de Turing: Es el reconocedor de lenguaje producido por una gramática tipo Autómata lineal restringido: Es el reconocedor del lenguaje producido por una gramática tipo Autómata de pila (Push Down Autómata): Es el reconocedor del lenguaje producido por una gramática tipo 2.

5 4. Autómata finito: Es el reconocedor del lenguaje producido por una gramática tipo 3. Automata finito Un autómata finito consiste de un conjunto finito de estados y un conjunto de transiciones de estado a estado, que ocurren bajo una entrada de símbolos seleccionados de un alfabeto, para cada símbolo de entrada hay una transición a otro estado o posiblemente al mismo. Definición formal: M = < Q,, γ, q 0, F > donde: Q = Conjunto finito no vació de estados = Conjunto de símbolos de entrada (alfabeto) γ = Función de transición q 0 Q = Estado inicial F incluido en Q = Conjunto de estados finales El autómata finito lee los símbolos secuencialmente de izquierda a derecha. Inicialmente se parte de q 0. Una cadena se dice que es aceptada por M si existe alguna (q 0,W) = P para P F. El conjunto de cadenas aceptadas por M denotada por L (M) es: L (M)= {W γ ( q, w) F y W * } Cualquier conjunto de cadenas aceptadas por un autómata finito se dice que es regular. Ejemplo de un Autómata Finito: Sea M = < Q,, γ, q o, F> donde: Q = { q 0, q 1, q 2, q 3 } = {0,1} Funciones: γ (q 0,0)=q 2 γ (q 1,0)=q 3 γ (q 2,0)=q 0 γ (q 3,0)=q 1 γ (q 0,1)=q 1 γ (q 1,1)=q 0 γ (q 2,1)=q 3 γ (q 3,1)=q 2 F = {q 0 } El lenguaje regular reconocido por el automata finito M denotador por L(M) es : L(M)={ ( 0 1 )* el numero de 0 s y 1 s es par }

6 Ejemplo: Verificar si la cadena pertenece al lenguaje regular reconocido por el automata M anterior. Entrada Estado actual del reconocedor q 0 γ (q 0,1)=q 1 q 1 γ (q 1,1)=q 0 q 0 γ (q 0,0)=q 2 q 2 γ (q 2,1)=q 3 q 3 γ (q 3,0)=q 1 q 1 γ (q 1,1)=q 0 q 0 Estado final por lo tanto la cadena es valida Autómata finito grafico (Diagramas de transición) Para representar el comportamiento de un analizador lexicografico podemos hacerlo mediante un diagrama que se construye bajo las siguientes reglas: 1.- Cada miembro de Q se representa por un círculo etiquetado con el estado en cuestión, por ejemplo: q Cada uno de las funciones de movimiento se representa con una flecha que va del estado izquierdo al estado derecho de la función y la flecha es etiquetada con el símbolo de entrada por ejemplo: (q 3, a ) = q 1 a q 3 q Los estados finales se marcan generalmente con doble círculo. 4.-Al estado inicial se le distingue con una flecha que no sale de ningún otro círculo. q 0 Ejemplo: Trazar el diagrama de transiciones para las siguientes funciones de transición: γ (q 0,a)=q 3 γ (q 3,b)=q 4 γ (q 4,a)=q 0

7 a q 0 q 3 a b q 4 Diagramas de transición de expresiones regulares primitivas Expresión Regular Diagrama a b a 0 0 a 1 a 0 1 b a b a b a* 0 a Ejemplo: Sea la expresión regular ( a b )* abb que representa a las cadenas formadas por a i y b j donde i, j => 0 y estan terminadas en abb si la descomponemos en las sub-expresiones regulares R 1 y R 2 tal que R 1 = ( a b )* R 2 = abb

8 Para R 1 para R 2 Concatenandolos 0 a a a b a a b b b b Cadenas generadas: 1) abb 2) aaabb 3) bbbabb 4) ababababb etc Tipos de autómatas finitos = Autómata Finito No-Deterministico (AFN) = Autómata Finito Deterministico ( AFD ) Autómata Finito No Deterministico: 1. Un AFN tiene transiciones etiquetadas con cadena vacía ( ) o con un simbolo de entrada. 2. Un mismo carácter puede etiquetar dos o mas transiciones. 3. Tiene un estado inicial y puede tener uno o mas estados finales. 4. No es facil de simular con software debido a la ambigüedad presentada por la situación de que de un estado pueden salir dos o mas transiciones originadas por el mismo símbolo de entrada. Autómata Finito Deterministico: 1. Un AFD no tiene transiciones vacías. 2. Para cada estado S y un símbolo de entrada α existe a lo mas una flecha etiquetada con α de la siguiente manera: S α NOTA: Se puede convertir un AFN a un AFD mediante un algoritmo de transformación.

9 Ejemplo de implementación de un analizador de lexico para identificadores El automata finito grafico que define a los identificadores es: Letra o digito 0 Letra 1 Delimitador 2 Se pueden construir rutinas que ejecuten funciones utiles: Getchar ( ) Letra ( C ) Digito ( C ) Delimitador ( C ) Retroceder ( C ) Fallo ( ) Insertar ( ) Return ( ) Lee un carácter y avanza un carácter en el buffer. True si C una letra. Trae si C es digito. True si es delimitador. Regresa el apuntador a un carácter (el correspondiente al delimitador ya que este no forma parte del identificador ). Regresa el apuntador e inicia el siguiente autómata. Mete el identificador a la tabla de símbolos y regresa la posición dentro de la tabla. Regresa id que es el token para un identificador y el apuntador a la tabla de símbolos. El pseudocodigo para cada estado del automata finito grafico anterior seria: Estado 0: c := Getchar ( ); IF Letra ( c ) THEN GOTO ESTADO 1 ELSE FALLO ( ); Estado 1: c := Getchar (); If Letra ( c ) OR Digito ( c ) THEN GOTO ESTADO 1 ELSE IF Delimitador ( c) THEN GOTO ESTADO 2 ELSE FALLO (); Estado 2: RETROCEDER (); RETURN ( id, insertar ( ) )

10 Otro ejemplo: Considerar la sentencia IF-THEN-ELSE soportada en muchos lenguajes de programacion IF <expr> oprel <expr> THEN BEGIN <acción> END ELSE BEGIN <acción> END Las expresiones regulares para los tokens de esta sentencia son: PalabraReservada = BEGIN END IF THEN ELSE Identificador = Letra ( Letra Digito )* NumEntero = Digito + Oprel = > < = >= <= <> Letra = a b c A B C.. Z Digito = Los autómatas graficos individuales serian: B E G I N RETURN ( BEGIN ) E N D RETURN ( END ) I F RETURN ( IF ) 14 T 15 H E N RETURN ( THEN ) 19 E 20 L Letra S E Letra o Digito RETURN ( ELSE ) RETURN ( id, insertar ( ) ) Digit Digito RETURN ( num, insertar () ) < = 30 < RETURN ( oprel ) RETURN ( oprel ) = < 38 > 36 > = 40 > RETURN ( oprel ) RETURN ( oprel ) RETURN ( oprel ) RETURN ( oprel ) Este analizador de lexico estaria formado por el codigo que implementa cada uno de los autómatas anteriores. Cuando un flujo de caracteres de entrada empata con uno de los autómatas entonces se devuelve su Token correspondiente.

11 Si ocurre que los caracteres de entrada no empatan con ningun automata significa un error de lexico, es decir, el carácter de entrada es desconocido para el lenguaje. 3.3 Manejo de localidades temporales de memoria ( buffers ) Buffers de Entrada Buffer del programa fuente Analizador De léxico Buffer de tokens Buffer de lexemas Analizador Sintáctico 1. El buffer del programa fuente se implementa como una simple cadena o String. 2. El procesamiento de buffer del programa es carácter por carácter. 3. Los buffers de tokens y lexemas sirven como buffers de entrada al análisis sintáctico, en la practica se implementan como un solo buffer. NOTA: Generalmente el termino Buffer de Entrada se refiere al buffer que entra al analizador sintactico. 4. Tres datos que puede mantener cada localidad del Buffer de Entrada serian: 1. Token 2. Lexema 3. Entrada o apuntador a la tabla de símbolos Esquematicamente: Complex Lexema Entrada Begin Begin 0 id Num1 1 num S 2 Oparit + 0 literal hola 3 End End 0 If If 0 Else Else 0 5. El Buffer de Entrada se implementa mediante una estructura de datos u objetos, con las siguientes operaciones básicas: 1. Inicializar ( ) elimina toda la información del buffer y pone el puntero del buffer en la localidad inicial. 2. Insertar ( t, l, e ) inserta una nueva línea en el buffer con token t, lexema l y un apuntador a la tabla de símbolos e. 3. Siguiente ( ) avanza el puntero del buffer una localidad. 4. Obt_elemento ( x ) devuelve el elemento ubicado en la localidad x. 5. reestablecer ( ) mueve el puntero del buffer a la primera localidad.

12 Modelo de clases para una implementacion de Buffer de Entrada TBufferEnt - arrbuffer [ MAXBE ] :TLinea_BE + preanalisis :TLinea_BE - intptr : entero 1 * TLinea_BE + complex : cadena + lexema : cadena + entrada : entero + inicializar () + insertar ( TLinea_BE L) : entero + siguiente () + obt_elemento (entero e) : TLinea_BE + reestablecer () Como funciona un objeto de la clase TBufferEnt? Ptr Complex Lexema Entrada Begin Begin 0 id Num1 1 num S 2 Oparit + 0 literal hola 3 End End 0 If If 0 Else Else 0 $ $ 0 preanalisis Begin Begin 0 El símbolo $ es una marca de terminacion del buffer. Inicialmente el buffer esta vacio y solo tiene el símbolo $ en la primer localidad, el indice Ptr se coloca en la posición inicial. Los símbolos se van insertando al buffer consecutivamente, desplazando siempre a $ al final del buffer. El preanalisis mantiene una copia de la localidad apuntada por Ptr. Conforme Ptr se mueva de localidad preanalisis toma los valores de esa localidad.

13 Código ejemplo de implementación del Buffer de Entrada class TLinea_BE { public: AnsiString complex; AnsiString lexema; int entrada; TLinea_BE { lexema = ; complex = ; entrada = 0 ; } }; class TBufferEnt { TLinea_BE arrbuffer [MAXBE]; int intptr; public: }; TLinea_BE preanalisis; void reestablecer (); void inicializar (); void siguiente (); int inserter ( TLinea_BE &L); TLinea_BE obt_elemento (int e); 3.4 Creacion de tablas de simbolos Una función esencial de un compilador es registrar los identificadores de usuario (nombres de variables, de funciones, de tipos, etc.) utilizados en el programa fuente y reunir información sobre los distintos atributos de cada identificador. Estos atributos pueden proporcionar información sobre la memoria asignada a un identificador, la dirección de memoria en que se almacenará en tiempo de ejecución, su tipo, su ámbito (la parte del programa donde es visible), etc. La tabla de símbolos es un componente importante del compilador. Mediante el eso de esta tabla el compilador registra y lleva un control de la información acerca de todos los símbolos reconocidos y objetos que este manejando, tales como: tipo de dato nombre dimension linea de declaracion lineas en que se hace referencia numero de parámetros etc. En general la tabla de símbolos se forma por el símbolo o nombre en cuestion y una serie de atributos. Símbolo Atributo 1... Atributo n Tipos de Tablas de Símbolos: de palabras reservadas de Constantes

14 de Procedimientos El uso de diferentes tablas depende de que tan sofisticado sea el compilador. Modelo de clases para una implementacion de Tabla de Simbolos El siguiente modelo representa las clases para una tabla de símbolos para identificadores y constantes. La tabla mantiene solo un atributo llamado tipo, usado para registrar el tipo de dato de cada identificador y constante. TTablaSimb - arrtabla [ MAXTS ] :TLinea_TS - intind : entero + inicializar () + insertar ( TLinea_TS L ) : entero + obt_elemento (entero e) : TLinea_TS + anadetipo ( entero p, cadena t ) + buscatipo ( entero p ) : cadena + buscar ( cadena lex ) : entero 1 * TLinea_TS + complex : cadena + lexema : cadena + tipo : cadena Como funciona un objeto de la clase TTablaSimb? Ind Complex Lexema Tipo 0 1 id Num1 int 2 id promedio float 3 num 45 int 4 num.num float 5 literal hola char La entrada 0 de la tabla de símbolos se reserva, no se usa. Ind es un indice al ultimo elemento insertado. La operación anadetipo ( p, t ) va a la localidad p y llena la columna TIPO con el valor t. La operación buscatipo ( p ) va a la localidad p y devuelve el valor de la columna TIPO. La operación buscar ( lex ) hace una busqueda sobre la columna LEXEMA buscando el valor lex, si lex no se encuentra devuelve 0. Pag. 39

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

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

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

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

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

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I Análisis Léxico I Profesor: Eridan Otto Análisis Léxico I Introducción Funciones Tokens,Patrones y Lexemas Reconocimiento de tokens Implementación de un AL 1 Análisis léxico: Introducción En esta unidad

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

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

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

Funcionamiento del A.L.

Funcionamiento del A.L. ANALIZADOR LEXICO 1 Funcionamiento del A.L. Programa fuente Analizador léxico Componente léxico Obtén el siguiente componente léxico Analizador sintáctico Tabla de símbolos 2 Maneja el fichero del programa

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

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

Máquinas de estado finito y expresiones regulares

Máquinas de estado finito y expresiones regulares Capítulo 3 Máquinas de estado finito y expresiones regulares En este tema definiremos y estudiaremos máquinas de estado finito, llamadas también máquinas de estado finito secuenciales o autómatas finitos.

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

Unidad 4. Autómatas de Pila

Unidad 4. Autómatas de Pila Unidad 4. Autómatas de Pila Una de las limitaciones de los AF es que no pueden reconocer el lenguaje {0n1n} debido a que no se puede registrar para todo n con un número finito de estados. Otro lenguaje

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

DEFINICIÓN FORMAL DE UN AFP

DEFINICIÓN FORMAL DE UN AFP Los AUTÓMATAS FINITOS CON PILA además de reconocer a los Lenguajes Regulares, tienen la capacidad de reconocer a los LICs, como las expresiones aritméticas y las sentencias de un Lenguaje de Programación.

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

Unidad 4. Autómatas de Pila

Unidad 4. Autómatas de Pila Unidad 4. Autómatas de Pila Una de las limitaciones de los AF es que no pueden reconocer el lenguaje {0 n 1 n } debido a que no se puede registrar para todo n con un número finito de estados. Otro lenguaje

Más detalles

8- LEX-Expresiones regulares

8- LEX-Expresiones regulares 8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite

Más detalles

Función del analizador léxico (1) Función del analizador léxico (3) Función del analizador léxico (2)

Función del analizador léxico (1) Función del analizador léxico (3) Función del analizador léxico (2) Función del analizador léxico (1) Componente léxicos (token): unidad mínima de información que significa algo a la hora de compilar; concepto de palabra; las frase de un lenguaje constan de cadenas de

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

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

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

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

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

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

Convertir un AFND a un AFD

Convertir un AFND a un AFD Convertir un AFND a un AFD Existe una equivalencia entre los AFD y AFN, de forma que un autómata M es equivalente a un autómata M' si L(M) ) L(M'). Ejemplo: Los autómatas de la siguiente figura son equivalentes.

Más detalles

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno 1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->

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

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

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

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

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

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Tipos de datos y Operadores Básicos

Tipos de datos y Operadores Básicos Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?

Más detalles

Seminario de introducción a Flex

Seminario de introducción a Flex Seminario de introducción a Flex David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una

Más detalles

09 Análisis léxico V Compiladores - Profr. Edgardo Adrián Franco Martínez

09 Análisis léxico V Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Autómata Definición formal de autómata Representación de un autómata Mediante tablas de transiciones Mediante diagramas de estados Autómata finito Definición formal de autómata finito Lenguaje

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

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

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

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

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

Tema 3: Gramáticas regulares. Teoría de autómatas y lenguajes formales I

Tema 3: Gramáticas regulares. Teoría de autómatas y lenguajes formales I Tema 3: Gramáticas regulares 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. Addison

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

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas Desarrollo de Programas Prof. Lisbeth C. Pérez Rivas lisbethpe@ula.ve Desarrollo de Programas Ejercicio: Calcular el sueldo neto de un trabajador conociendo el número de horas trabajadas, la tarifa horaria

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

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

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

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

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

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

Lex (flex,... ) Generación de analizador léxico p.1

Lex (flex,... ) Generación de analizador léxico p.1 Generación de analizador léxico Lex (flex... ) Generación de analizador léxico p.1 Expresiones regulares tipo grep Expresiones simples (un sólo carácter): carácter carácter. cualquier carácter (excepto

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

Autómata de Pila (AP, PDA) Tema 18

Autómata de Pila (AP, PDA) Tema 18 Tema Autómata de Pila (Pushdown Automata Autómata de Pila (AP, PDA Un AP es una máquina que acepta el lenguage generado por una GLC Consiste en un NFA- aumentado con una pila (stack. Dr. Luis A. Pineda

Más detalles

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

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Examen IIC 2222 Teoría de Autómatas y Lenguajes Formales Segundo Semestre, 2003 Este examen tiene

Más detalles

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de

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

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

ESPECIFICACIÓN DE SÍMBOLOS

ESPECIFICACIÓN DE SÍMBOLOS 1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ESPECIFICACIÓN DE SÍMBOLOS Elaborado el Sábado 24 de Julio de 2004 I.- COMPONENTES LÉXICOS, PATRONES Y LEXEMAS (extraído de

Más detalles

Introducción. El proceso de traducción

Introducción. El proceso de traducción Toda compilación es un proceso de transformación paulatina que convierte un programa escrito en un lenguaje fuente de alto nivel en otro programa escrito en un lenguaje objeto de bajo nivel. Ese proceso

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

COMPILADORES E INTERPRETES

COMPILADORES E INTERPRETES COMPILADORES E INTERPRETES Análisis semántico: Estudia el significado de la sentencia Procesadores de lenguaje: Convierte un programa fuente hecho en un lenguaje fuente a un programa objeto hecho en un

Más detalles

PRACTICA 5: Autómatas Finitos Deterministas

PRACTICA 5: Autómatas Finitos Deterministas E. T. S. DE INGENIERÍA INFORMÁTICA Departamento de Estadística, I.O. y Computación Teoría de Autómatas y Lenguajes Formales PRACTICA 5: Autómatas Finitos Deterministas 5.1. Requisito de codificación Cada

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

Analizador Sintáctico RECURSIVO

Analizador Sintáctico RECURSIVO Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 Analizador Sintáctico RECURSIVO ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN

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

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

Lenguajes y Gramáticas

Lenguajes y Gramáticas Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas

Más detalles

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I Tema 1: Introducción 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. Addison Wesley.

Más detalles

DATOS DE IDENTIFICACIÓN. Materia: Introducción a la teoría de los lenguajes formales Definición de alfabeto ETAPA PREINSTRUCCIONAL

DATOS DE IDENTIFICACIÓN. Materia: Introducción a la teoría de los lenguajes formales Definición de alfabeto ETAPA PREINSTRUCCIONAL Actividades ACTIVIDAD 1.1 Introducción a la teoría de los lenguajes formales Definición de alfabeto 30 minutos Búsqueda de diferentes lenguajes Desarrollar el análisis de textos y el aprendizaje autónomo.

Más detalles

Procesadores de lenguaje Tema 2 Análisis léxico

Procesadores de lenguaje Tema 2 Análisis léxico Procesadores de lenguaje Tema 2 Análisis léxico Departamento de Ciencias de la Computación Universidad de Alcalá de Henares Resumen del tema Objetivo: comprender la estructura, organización y funcionamiento

Más detalles

22, 23 y 24 Análisis sintáctico V Compiladores - Profr. Edgardo Adrián Franco Martínez

22, 23 y 24 Análisis sintáctico V Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Análisis Sintáctico Ascendente Métodos Ascendentes Método Ascendente SLR Pasos para el método SLR Ejemplo SLR Resumen Ejercicios Compiladores (Análisis Sintáctico VI - Análisis Ascendente -

Más detalles

Tema 2. Análisis léxico

Tema 2. Análisis léxico Departamento de Tecnologías de la Información Tema 2 Análisis léxico Ciencias de la Computación e Inteligencia Artificial Índice 2.1 Introducción 2.2 Especificación de categorías léxicas 2.3 Autómatas

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

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 semántico. Análisis semántico. Índice (I)

Análisis semántico. Análisis semántico. Índice (I) Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección

Más detalles

Qué es Lex? Busca concordancias de un conjunto de expresiones regulares y un archivo de entrada y ejecuta acciones asociadas.

Qué es Lex? Busca concordancias de un conjunto de expresiones regulares y un archivo de entrada y ejecuta acciones asociadas. Introducción a Flex Qué es lex? Es un programa que genera analizadores léxicos (también conocido como scanners en inglés). Usualmente se usa junto a Yacc Originalmente escrito por Eric Schmidt and Mike

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

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

Analizador Léxico en LEX

Analizador Léxico en LEX Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 en LEX ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN JOSE TRINIDAD PROFESORA:

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

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

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

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

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

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones 1 Curso Básico de Computación 5 Autómatas de pila 5.1 Descripción informal Un autómata de pila es esencialmente un autómata finito que controla una cinta de entrada provista de una cabeza de lectura y

Más detalles

Generador de analizadores léxicos FLEX

Generador de analizadores léxicos FLEX Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce

Más detalles

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

Curso Básico de Computación

Curso Básico de Computación Curso Básico de Computación Autómatas finitos y expresiones regulares Feliú Sagols Troncoso Matemáticas CINVESTAV-IPN 2010 Curso Básico de Computación (Matemáticas) Autómatas

Más detalles

Tema 1. Introducción

Tema 1. Introducción Departamento de Tecnologías de la Información Tema 1 Introducción Ciencias de la Computación e Inteligencia Artificial Índice 1.1 Conceptos 1.2 Un poco de historia 1.3 Estructura de un compilador 1.4 Teoría

Más detalles

CAPITULO 2: LENGUAJES

CAPITULO 2: LENGUAJES CAPITULO 2: LENGUAJES 2.1. DEFINICIONES PREIAS SIMBOLO: Es una entidad indivisible, que no se va a definir. Normalmente los símbolos son letras (a,b,c,.., Z), dígitos (0, 1,.., 9) y otros caracteres (+,

Más detalles

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos Dr. Ricardo Soto [ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/ rsoto] Escuela de Ingeniería Informática Pontificia Universidad

Más detalles

10 Análisis léxico VI Compiladores - Profr. Edgardo Adrián Franco Martínez

10 Análisis léxico VI Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Clasificación de los autómatas finitos Autómata finito no determinista (AFND) Autómata finito determinista (AFD) Teorema sobre la transformación de AFND en AFD Transformación de una expresión

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación CODIGO: 796 CREDITOS: 3 ESCUELA: Ciencias

Más detalles

Introducción a la lingüística computacional

Introducción a la lingüística computacional Introducción a la lingüística computacional César Antonio Aguilar Facultad de Lenguas y Letras 17/08/2017 Cesar.Aguilar72@gmail.com Síntesis de la clase pasada (1) En la clase anterior nos dedicamos a

Más detalles

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 1. (1) Partiendo de la especificación interfaz-función de los siguientes módulos LeerDatosNIF = PROCEDIMIENTO() DEVUELVE

Más detalles