Tema 2. Análisis lexicográfico
|
|
|
- Juan José Venegas Carmona
- hace 9 años
- Vistas:
Transcripción
1 Traductores, Compiladores e Intérpretes 1 Tema 2. Análisis lexicográfico Este capítulo estudia la primera fase de un compilador, es decir su análisis lexicográfico, o más concisamente análisis léxico. Las técnicas utilizadas para construir analizadores léxicos también se pueden aplicar a otras áreas, como, por ejemplo, a lenguajes de consulta y sistemas de recuperación de información. En cada aplicación, el problema de fondo es la especificación y diseño de programas que ejecuten las acciones activadas por palabras que siguen ciertos patrones dentro de las cadenas a reconocer. Como la programación dirigida por patrones es de mucha utilidad, se introduce un lenguaje de patrón-acción, llamado LEX, para especificar los analizadores léxicos. En este lenguaje, los patrones se especifican por medio de expresiones regulares, y un compilador de LEX puede generar un reconocedor de las expresiones regulares mediante una autómata finito eficiente. Por otro lado, una herramienta software que automatiza la construcción de analizadores léxicos permite que personas con diferentes conocimientos utilicen la concordancia de patrones en sus propias áreas de aplicación. Que es un analizador léxico? e encarga de buscar los componentes léxicos o palabras que componen el programa fuente, según unas reglas o patrones. La entrada del analizador léxico podemos definirla como una secuencia de caracteres. gramática (N, T, P, ) N ímbolos no terminales. T ímbolos terminales P Reglas de producción Axioma inicial El analizador léxico tiene que dividir la secuencia de caracteres en palabras con significado propio y después convertirlo a una secuencia de terminales desde el punto de vista del analizador sintáctico, que es la entrada del analizador sintáctico. El analizador léxico reconoce las palabras en función de una gramática regular de manera que sus NO TERMINALE se convierten en los elementos de entrada de fases posteriores. En LEX, por ejemplo, esta gramática se expresa mediante expresiones regulares.
2 Traductores, Compiladores e Intérpretes 2 Funciones del analizador léxico El analizador léxico es la primera fase de un compilador. u principal función consiste en leer los caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer el análisis. Esta interacción, suele aplicarse convirtiendo al analizador léxico en una subrutina o corrutina del analizador sintáctico. Recibida la orden Dame el siguiente componente léxico del analizador sintáctico, el analizador léxico lee los caracteres de entrada hasta que pueda identificar el siguiente componente léxico. Figura 2 Interacción de un analizador léxico con el analizador sintáctico Otras funciones que realiza : Eliminar los comentarios del programa. Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo aquello que carezca de significado según la sintaxis del lenguaje. Reconocer los identificadores de usuario, números, palabras reservadas del lenguaje,..., y tratarlos correctamente con respecto a la tabla de símbolos (solo en los casos que debe de tratar con la tabla de símbolos). Llevar la cuenta del número de línea por la que va leyendo, por si se produce algún error, dar información sobre donde se ha producido. Avisar de errores léxicos. Por ejemplo, no pertenece al lenguaje, avisar de un error. Puede hacer funciones de preprocesador.
3 Traductores, Compiladores e Intérpretes 3 Necesidad del analizador léxico Un tema importante es el porqué se separan los dos análisis lexicográfico y sintáctico, en vez de realizar sólo el análisis sintáctico, del programa fuente, cosa perfectamente posible aunque no plausible. Algunas razones de esta separación son: Un diseño sencillo es quizás la consideración más importante. eparar el análisis léxico del análisis sintáctico a menudo permite simplificar una u otra de dichas fases. El analizador léxico nos permite simplificar el analizador sintáctico. i el sintáctico tuviera la gramática de la Opción 1, el lexicográfico sería: Opción 1: ( ) + NUM ( + - * / ) OPARIT i en cambio el sintáctico toma la Opción 2, el lexicográfico sería: Opción 2: ( ) + NUM + MA - MENO * MULT / DIV Es más, si ni siquiera hubiera análisis léxico, el propio análisis sintáctico vería incrementado su número de reglas: NUM NUM NUM
4 Traductores, Compiladores e Intérpretes 4 Necesidad del analizador léxico A modo de conclusión, diremos que tenemos dos gramáticas, una que se encarga del análisis léxico y otra que se encarga del análisis sintáctico. Que consideramos componente básico?, Donde ponemos el punto divisor de qué se encarga cada gramática?. i las divisiones se hacen muy pequeñas estamos complicando la gramática, por ejemplo, en la opción 2, la gramática sintáctica se nos complica un poco. eguiremos dos reglas para que no se nos complique. La primera es que tendremos que hacer divisiones de forma que no perdamos información, esto quedará más claro en capítulos posteriores, y nos veremos ayudados por el concepto de atributo. La segunda es que por regla general el analizador lexicográfico debe de encargarse de la parte que involucra una gramática regular (que nosotros expresaremos mediante expresiones regulares). e mejora la eficiencia del compilador. Un analizador léxico independiente permite construir un procesador especializado y potencialmente más eficiente para esa función. Gran parte del tiempo se consume en leer el programa fuente y dividirlo en componentes léxicos. Con técnicas especializadas de manejo de buffers para la lectura de caracteres de entrada y procesamiento de componentes léxicos se puede mejorar significativamente el rendimiento de un compilador. e mejora la portabilidad del compilador. Las peculiaridades del alfabeto de entrada y otras anomalías propias de los dispositivos pueden limitarse al analizador léxico. La representación de símbolos especiales o no estándares, como en Pascal, pueden ser aisladas en el analizador léxico. Otra razón por la que se separan los dos análisis es para que el analizador léxico se centre en el reconocimiento de componentes básicos complejos. Por ejemplo en FORTRAN, existen el siguiente par de proposiciones : DO 5 I = 2.5 (Asignación de 2.5 a la variable DO5I) DO 5 I = 2,5 (Bucle que se repite para I = 2, 3, 4, 5) En éste lenguaje los espacios en blancos no son significativos fuera de los comentarios y de un cierto tipo de cadenas, de modo que supóngase que todos los espacios en blanco eliminables se suprimen antes de comenzar el análisis léxico. En tal caso, las proposiciones anteriores aparecerían al analizador léxico como DO5I = 2.5 DO5I = 2,5 El analizador léxico no sabe si DO es una palabra reservada o es el prefijo de una variable hasta que llegue a la coma. El analizador ha tenido que mirar más allá de la propia palabra a reconocer haciendo lo que se denomina lookahead (o prebúsqueda).
5 Traductores, Compiladores e Intérpretes 5 Conceptos de tokens, patrones y lexemas El analizador lexicográfico puede tener la siguiente estructura: Donde cada acción es un fragmento de programa que describe cual ha de ser la acción del analizador léxico cuando la secuencia de entrada coincida con la expresión regular. Patrón : es una expresión regular. Token : es el terminal asociado a un patrón. Cada token se convierte en un número que es un código identificativo de cada patrón. En algunos casos, cada número tiene asociado un puntero a la tabla de símbolos. Utilizamos la palabra terminal desde el punto de vista de la gramática utilizada por el analizador sintáctico. Lexema : Es cada secuencia de caracteres concreta que encaja con un patrón, es decir, es como una instancia de un patrón. Ej: 8, 23, 50 ( son lexemas que encajan con el patrón ( ) + ) Una vez detectado que un grupo de caracteres coincide con un patrón, se ha detectado un lexema. A continuación se le asocia un número, que se le pasará al sintáctico, y, si es necesario, información adicional, como puede ser una entrada en la tabla de símbolos. La tabla de símbolos suelen ser listas encadenadas de registros con parte variable: listas ordenadas, árboles binarios de búsqueda, tablas hash, etc. Ejemplo: Hacer un analizador léxico que nos reconozca los números enteros, los números reales y los identificadores de usuario. Vamos a hacer este ejemplo en C. Expresión Regular Terminales ( ) + NUM_ENT (0... 9)*. (0... 9) + NUM_REAL (a... z) (a... z ) * ID Asociado a la categoría gramatical de número entero tendremos el token NUM_ENT que puede equivaler por ejemplo al número 280; asociado a la categoría gramatical número real tendremos el token NUM_REAL que equivale al número 281; asociado a la categoría gramatical identificador de usuario tendremos el token ID que equivale al número 282. ( ) + { return 280;} (0... 9)*. (0... 9) + { return 281;} (a...z) (a...z 0...9) * { return 282;}
6 Traductores, Compiladores e Intérpretes 6 i tuviéramos como texto de entrada el siguiente: cont Conceptos de tokens, patrones y lexemas El analizador léxico intenta leer el lexema más grande; el 95 encaja con el primer patrón, pero sigue, al encontrarse el punto, se da cuenta de que también encaja con el segundo patrón, entonces como este es más grande, toma la acción del segundo patrón, return NUM_REAL. El 99 coincide con el patrón NUM_ENT, y la palabra con ID. Los espacios en blanco no coinciden con ningún patrón, y veremos más adelante como tratarlos. En vez de trabajar con los números 280, 281, 282, se definen mnemotécnicos. # define NUM_ENT 280 # define NUM_REAL 281 # define NUM_ID 282 ( \t \n) (0... 9) + {return NUM_ENT;} (0... 9) *. (0... 9) + {return NUM_REAL;} (a... z) (a... z )* {return ID;} Las palabras que entran por el patrón ( \t \n) no tienen acción asociada, por lo que, por defecto, se consideran meros espaciadores. En PCLEX le introducimos una especificación parecida a la anterior y a la salida obtendremos un analizador lexicográfico en C. Hay tres formas para construir un analizador lexicográfico. - Ad hoc (a pelo) - Autómatas finitos (como en teoría de autómatas y lenguajes formales) - Metacompilador (más fácil) : Le pasamos pares (exp regular, {acción}). El metacompilador genera todos los autómatas finitos, los convierte a autómata finito determinista, y lo implementa en C. El programa C así generado se compila y se genera un ejecutable que es el análisis léxico de nuestro lenguaje.
7 Traductores, Compiladores e Intérpretes 7 e han desarrollado algunas herramientas para construir analizadores léxicos a partir de notaciones de propósito especial basadas en expresiones regulares. En esta sección se describe una herramienta concreta, llamada LEX, muy utilizada en la especificación de analizadores léxicos para varios lenguajes. Esta herramienta se denomina PCLEX, y la especificación de su entrada, lenguaje LEX. El estudio de una herramienta existente permitirá mostrar cómo, utilizando expresiones regulares, se puede combinar la especificación de patrones con acciones, por ejemplo, haciendo entradas de una tabla de símbolos cuya ejecución se pueda pedir a un analizador léxico. Las reglas de conversión son de la forma: p 1 {acción 1 } p 2 {acción 2 } p n {acción n } donde p i es una expresión regular y cada acción es un fragmento de programa que describe cuál ha de ser la acción del analizador léxico cuando el patrón p i concuerda con un lexema. En LEX, las acciones se escriben en C, en general, sin embargo, pueden estar en cualquier lenguaje de implantación. Un analizador léxico creado por LEX se comporta en sincronía con un analizador sintáctico como sigue. Cuando es activado por el analizador sintáctico, el analizador léxico crea una función llamada yylex, que una vez llamada, comienza a leer la entrada, un carácter a la vez, hasta que encuentre el mayor prefijo de la cadena que concuerde con una de las expresiones regulares p i. Entonces, ejecuta la acción i. Generalmente, acción i devolverá el control al analizador sintáctico. in embargo, si no lo hace, el analizador léxico se dispone a encontrar más lexemas, hasta que una acción hace que el control regrese al analizador sintáctico. La búsqueda repetida de lexemas hasta encontrar una instrucción return explícita permite al analizador léxico procesar espacios en blanco y comentarios de manera apropiada. El analizador léxico devuelve un único lexema al analizador sintáctico que estará almacenado en la variable yytext. i queremos retornar más información además del token, podemos usar la variable global yylval. Los programas que se obtienen en LEX son muy grandes, (aunque muy rápidos también), lo cual a veces resulta perjudicial. Aunque su ventaja principal es que permite hacer analizadores complejos con bastante rapidez. LEX tiene su propio lenguaje, al que llamaremos LEX.
8 Traductores, Compiladores e Intérpretes 8 El lenguaje LEX permite expresar expresiones regulares, y la acción a tomar al encontrar cada una de ellas. Pasos para crear un analizador léxico: Construir el fuente en LEX. Compilarlo con LEX. e obtiene un fuente en C. Algunas veces hay que efectuar modificaciones directas en este código. Compilarlo con un compilador C. i ejecutamos prog.exe se quedará esperando a que le introduzca datos por teclado para analizarlos hasta que le introduzcamos ctrl+z. El programa va buscando entre los patrones si coincide con el lexema que le hemos metido. Cuando reconoce uno ejecuta la acción que tiene asociada. Ej: [0-9] + {printf( numero );} [A-Z]+ {printf( palabra );} tecleamos : HOLA 23 ^z Cuando un lexema caza con un patrón, el PCLEX me cede el control. alida : palabranumero Reconoce HOLA, ejecuta la acción asociada y después sigue reconociendo lexemas. c:> i queremos meter como entrada un texto que no proceda de la entrada standard, sino que proceda de un fichero lo que se hace es redirigir la entrada. prog < file.pas > salida.txt < file.pas redirige la entrada > salida.txt redirige la salida.
9 Traductores, Compiladores e Intérpretes 9 El formato de un programa LEX es: Área de definiciones LEX /* es lo único obligatorio en todo el programa */ Área de Reglas Área de funciones El mínimo programa que se puede construir en LEX es: En el área de reglas vamos a definir los patrones que se quieren buscar a la entrada, y al lado de tales expresiones regulares, se detallan (en C) las acciones a ejecutar tras encontrar una cadena que se adapte al patrón indicado. En LEX, si una cadena de entrada no encaja con ningún patrón, la acción que se toma es escribir tal entrada en la salida. copia la entrada en la salida. El ejecutable que se obtiene usa la salida standard. Premisas de LEX para reconocer lexemas 1. LEX toma siempre el lexema más largo posible. 2. En caso de conflicto toma siempre el patrón que aparezca en primera posición. Como consecuencia de la 2ª premisa: las palabras reservadas se colocan siempre antes que el patrón de identificador de usuario. TYPE VAR [A-Z][A-Z0-9]* i se introduce el lexema VAR,en este ejemplo hay un conflicto, (ya que puede entrar tanto por el patrón segundo, como por el patrón tercero). Entonces toma el patrón que aparece antes, en nuestro ejemplo sería VAR. Y reconoce el lexema como palabra reservada. i cambio el orden: TYPE [A-Z][A-Z0-9]* VAR igue habiendo un conflicto, y esta vez entraría por el patrón de identificador de usuario, nunca se reconocería como una palabra reservada Las premisas se cumplen en ese orden.
10 Traductores, Compiladores e Intérpretes 10 Caracteres especiales de LEX : irve para encerrar cualquier cadena de literales. Por regla general no es necesario encerrar los literales entre comillas a no ser que incluyan símbolos especiales. (* Comentario de MODULA2. \ : Hace literal al siguiente carácter, excepto : \n, \t. \nº octal Indica el carácter cuyo valor ACII es nº octal Ej: \012 Reconoce el carácter decimal 10 que es el LF PCLEX tiene el problema de que si se le pone un número ACII mayor de 128 se bloquea. [ ] : Indican clases de caracteres, o sea uno de los caracteres que encierra. [abc] Indica, o la a, o la b, o la c. ( [abc] (a b c) ) Permite en su interior el uso de: - : indica rango. [A-Z0-9] de la A a la Z o de 0 a 9. ^ : indica complementación (cuando aparece al comienzo, justo detrás de [ ) [^abc] Cualquier carácter excepto la a, la b o la c. [^A-Z] Cualquier carácter excepto de la A a la Z.? : Lo que precede es opcional. a? a J [A-Z]? Cualquier letra de la A a la Z o bien J. a?b ab Jb.. : Representa a cualquier carácter excepto el retorno de carro (\n). Es muy interesante porque nos permite recoger cualquier otro carácter, pero solo entra uno. : Indica opción. (OR). a b a o b.. \n Por aquí encaja cualquier carácter. (. \n)* Por aquí entra el programa entero, y como LEX tiene la premisa del lexema más largo, ignorará cualquier otro patrón. Nos daría un desbordamiento. No hacerlo nunca. * : Indica repetición 0 o más veces de lo que le precede. + : Indica repetición 1 o más veces de lo que le precede.
11 Traductores, Compiladores e Intérpretes 11 ( ) :Indica agrupación (igual que en las expresiones aritméticas). { } : Indica rango de repetición. También nos permite crear expresiones regulares, y asignarle un nombre. a{1,5} aa?a?a?a?a? (Es el * restringido) Caracteres de sensibilidad al contexto $ : El patrón que le precede solo se reconoce si está al final de la línea. No incluye \n como parte del lexema. (a b cd)$ a \n, o b \n, o cd \n ^ : Fuera de los corchetes indica que el patrón que le sucede sólo se reconoce si está al comienzo de la línea ^ casa casa casa ^ casa Ver la importancia de las dos premisas de LEX: En el segundo ejemplo no entraría nunca por ^ casa. Los casos especiales se ponen siempre antes. / : Reconoce el patrón que le precede si y sólo si es prefijo de una secuencia simple como la que le sucede. ab/c ejemplo el lexema abcd. Por ese patrón entra ab porque está sucedido de c, sino no entraría (c no entra). ab/c+ Esto es un error. No se permite c+ detrás, porque no es simple. <id n> : Permiten expresar condiciones TART. e declaran en el área de definiciones: % TART id 1, id 2,... e activan en las acciones (código C asociado a cada patrón), con: BEGIN id i ; Cuando un patrón está precedido por: <id i > donde id i es una condición TART, el patrón sólo se reconoce si está activa la condición TART.
12 Traductores, Compiladores e Intérpretes 12 Ejemplo : Escribe el nombre de todos los procedimientos y funciones de un programa MODULA-2. % TART PROC PROCEDURE {BEGIN PROC;} <PROC> [a-za-z][a-za-z0-9]* {printf ( ); BEGIN 0 ;} Cuando un lexema entra por un patrón, la variable yytext contiene ese lexema, de forma que en el printf del ejemplo podríamos poner: printf ( %s\n, yytext); El núcleo básico de lo generado es una función yylex que se encarga de buscar un lexema y ejecutar su acción asociada. Así sucesivamente hasta que en una de las acciones se encuentre un return, o se acabe la entrada. La zona de definiciones tiene tres utilidades fundamentales: a) Poder dar un nombre a los patrones más frecuentes. b) Poner código C que será global a todo el programa. c) Para definir las condiciones TART. En la zona de definiciones podemos crear expresiones regulares auxiliares. Por ejemplo: D [0-9] L [a-za-z] {D}+ {L}({L} {D})* Todo se debe comenzar en la primera columna. i se comienza algo no en la primera columna, se pasa directamente al programa C generado por LEX. Así podemos crear definiciones de variables, etc. in embargo, para ello se recomienda poner, ya que de esta forma se pueden poner incluso directivas del procesador, que deben comenzar obligatoriamente en la primera columna. %{ definiciones C. %} Antes del primer, con lo cual la definición será global. Poner %{ y %} al principio es igual que poner código C al final (en la zona de funciones).
13 Traductores, Compiladores e Intérpretes 13 En M-DO cuando se compila no hay función main. Para ponerlo, en el área de funciones basta con poner: void main() { yylex(); }; El main tiene que tener una llamada al analizador lexicográfico mediante la función yylex. El analizador sintáctico, cada vez que pida token tiene que hacer una llamada a yylex, y el yylex tiene que hacer un return para devolverselo al analizador sintáctico. Ahora no hará return hasta que no lo enlacemos con el YACC para que el analizador sintáctico pueda ir construyendo el árbol sintáctico. Ejemplo: Programa que me dice cuantas veces aparece la variable casa. %{ int cont=0; %} casa {cont ++;}. \n {;} void main(){ yylex(); printf( casa aparece %d veces, cont); } Funciones y variables que nos suministra PCLEX yylex ( ) : Analizador lexicográfico. yytext : Coincide con el lexema actual yyleng : Longitud del lexema actual. No utilizar nombres de funciones que empiecen por yy------, y tampoco que tengan un solo carácter. yylval : es una variable global (inicialmente de tipo entero), que permite retornar información adicional. Nos permite comunicarnos con el sintáctico. yyerror ( ) : Es una función que se encarga de emitir y controlar errores (saca mensajes de error por pantalla).
14 Traductores, Compiladores e Intérpretes 14 yywrap ( ) : e llama a esta función una vez que se ha leído todo el texto de entrada. e puede usar para visualizar tablas de resúmenes. Es una macro que hay que redefinir. Para ello hay que borrarla antes. Cómo se borra una definición previa? - con la directiva #undef. Yywrap es llamada por yylex al encontrar un EOF. Puede retornar dos valores: - Falso (0): es que el EOF que se ha encontrado no es el verdadero y tiene que seguir leyendo. e supone que se suministrará de alguna forma más texto de entrada. - True (1) : El EOF encontrado es el definitivo y para. yyless(n) : e queda con los n primeros caracteres del lexema actual. El resto los devuelve a la entrada.yyleng se modifica. Ejemplo: Estos tres patrones son equivalentes. abc*$ abc* / \n abc* \n {yyless(yyleng-1);} input ( ) : Consume el siguiente carácter de la entrada y lo añade al lexema actual abc { printf ( %s, yytext); input( ); printf( %s, yytext);} Introducimos como entrada : abcde El lexema antes del input (en el primer printf) sería abc, después del input (en el segundo printf) será abcd. output (c): Emite el carácter c por la salida standard. unput : Coloca el carácter c al comienzo de la entrada Ejemplo: abc {printf ( %s,yytext);} tal La acción que tiene asociada el patrón abc, es la acción por defecto, sino la pongo sale lo mismo. ECHO es una macro que nos suministra PCLEX. Otra forma de ponerlo abc tal {ECHO; unput( t );} {ECHO;}
15 Traductores, Compiladores e Intérpretes 15 i la entrada es abcal, Los tres primeros caracteres del lexema coincide con el primer patrón. Después nos queda en la entrada el lexema al, pero como se ha hecho un unput( t ), el lexema que queda es tal, que coincide con el segundo patrón. ECHO : Macro que copia la entrada en la salida (es la acción que hace por defecto). yymore ( ): Concatenar el siguiente lexema al contenido actual de yytext. irve para reconocer los literales entrecomillados. \ [^ \ ] * \ Lexemas que empiece por comillas, cualquier cosa, y termine en comillas Hola Ho;* Hola,\ tío\ Da problema porque la primera comilla de tío, la considera como las comillas de cierre. Que hay que hacer para que reconozca el lexema entero? \ [^ \ ] * \ {if (yytext[yyleng-1]== \\ ) yymore(); else input();} Lo que se ponga detrás de yymore nunca se ejecutará, ya que yymore es una especie de GOTO. REJECT : Rechaza el lexema actual y busca otro patrón. REJECT le dice al LEX que el lexema encontrado no corresponde realmente a la expresión regular en curso, y que busque la siguiente expresión regular a que corresponda. La macro REJECT debe ser lo último de una acción. i hay algo detrás, no se ejecuta. Por ejemplo: Para buscar cuantas veces aparecen las letras teclado y lado, se haría: %{ int t=0, l=0; %} teclado {t ++; REJECT;} lado {l ++;} i la entrada es teclado ^Z 1.- Entra por el lexema más largo que sería teclado y ejecuta la acción asociada. Incrementa la variable t ; y rechaza el lexema actual. 2.- aca por pantalla tec que es la acción por defecto si no coincide el lexema con ningún patrón. 3.- El lexema lado coincide con el segundo patrón y ejecuta la acción asociada. Incrementa la variable l
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
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.
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
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
PROCESADORES DE LENGUAJES
PROCESADORES DE LENGUAJES Análisis léxico con Prof. Dr. Nicolás Luis Fernández García Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba Universidad de
Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas. Práctica 1: Introducción al Analizador Léxico FLEX
Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas Práctica 1: Introducción al Analizador Léxico FLEX Enunciado: El objetivo de esta práctica consiste en aprender
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
Seminario de introducción a Flex
Seminario de introducción a Flex David Portolés Rodríguez [email protected] Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una
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
1. Funcionamiento de lex
El generador de analizadores léxicos lex. Teoría de Autómatas y lenguajes formales Federico Simmross Wattenberg ([email protected]) Universidad de Valladolid Una vez visto cómo las expresiones regulares
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,
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 [email protected]
Lex. Lex. Ing. Adrian Ulises Mercado Martínez. Enero 30, Ing. Adrian Ulises Mercado Martínez Lex Enero 30, / 27
Lex Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Lex Enero 30, 2015 1 / 27 1 Lex 2 Compilar con lex 3 Estructura de un programa en lex 4 Expresiones Regulares
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
Capítulo 2 Análisis lexicográfico
Java a tope: Traductores y compiladores con Lex/Yacc, JFlex/Cup y JavaCC Capítulo 2 Análisis lexicográfico 2.1 Visión general Este capítulo estudia la primera fase de un compilador, es decir su análisis
YACC. Los símbolos terminales que la gramática empleará. El axioma o símbolo inicial de la gramática. %token. %start
YACC Yacc (Yet Another Compiler Compiler) es un programa que permite construir analizadores gramaticales en C a partir de una gramática libre al contexto. Junto con Lex permite construir rápidamente las
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
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.
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
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
Construcción de un analizador léxico para ASPLE con Lex/Flex. Construcción de un analizador léxico para ASPLE con Lex/Flex
Construcción de un analizador léxico para ASPLE con Lex/Flex Índice (i) Marina de la Cruz AlfonsoOrtega Funciones del analizador léxico/morfológico Construcción de un analizador léxico/morfológico Funcionamiento
Construcción de un analizador léxico para ALFA con Flex. Construcción de un analizador léxico para ALFA con Flex. Índice (I)
Construcción de un analizador léxico para ALFA con Flex Índice (I) Marina de la Cruz Alfonso Ortega Funciones del analizador léxico/morfológico Construcción de un analizador léxico/morfológico Funcionamiento
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
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)
DESARROLLO DE LA PRÁCTICA DE ANÁLISIS SINTÁCTICO
1/5 DESARROLLO DE LA PRÁCTICA DE ANÁLISIS SINTÁCTICO CREACIÓN DEL FICHERO ALFA.Y 1. En la sección de definiciones, se incorporan los siguientes elementos: #include para utilizar la función fprintf.
$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
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
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
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
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.
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,
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
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
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
INICIACIÓN A LA PROGRAMACIÓN EN C
INICIACIÓN A LA PROGRAMACIÓN EN C Estructura de un programa sencillo en lenguaje c: Librería estándar de entrada salida Llave de apertura para delimitar el cuerpo de la función Llave de cierre para delimitar
PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009
PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009 PRÁCTICA 2: ANALIZADOR SINTÁCTICO Y TABLA DE SÍMBOLOS. Objetivo de la Práctica Esta práctica tiene como primer objetivo la codificación de un analizador
Apunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Manual de usuario Realizado por: José Francisco Jódar Reyes Dirigido por: Jorge Revelles Moreno
Compiladores e intérpretes Introducción
Introducción Profesor: Eridan Otto Introducción Perspectiva histórica Motivación Definiciones Componentes y fases de un compilador 1 Introducción Definiciónes básicas Traductor: desde un punto de vista
12 La herramienta LEX
2 Contenido La herramienta Lex Esquema de un fuente en Lex Zona de definiciones Zona de reglas Zona de rutinas del usuario Archivo de salida (lex.yy.c) Copilar un fuente de Lex Opciones estándar Depuración
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
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
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
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
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba
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
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones [email protected] Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
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
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
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo
Práctica 3 Introducción al Manejo de Bison
Práctica 3 Introducción al Manejo de Bison Tareas 1. Estudia la sección sobre Bison en el documento Intro_Flex_Bison.pdf (página 10 a nal) y descarga el manual de Bison como soporte para consultas (bison.pdf).
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
UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA APUNTES DE CÁTEDRA EL METACOMPILADOR BISON INTERFAZ FLEX - BISON
UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA Compiladores APUNTES DE CÁTEDRA EL METACOMPILADOR BISON INTERFAZ FLEX - BISON 1. Qué es BISON? BISON, al igual que FLEX, permite generar programas de
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
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Laboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
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
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
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
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Nombre de la asignatura: Lenguajes y Autómatas I. Créditos: Aportación al perfil
Nombre de la asignatura: Lenguajes y Autómatas I Créditos: 2 3 5 Aportación al perfil Desarrollar, implementar y administrar software de sistemas o de aplicación que cumpla con los estándares de calidad
10 Introducción a BISON/YACC
10 Introducción a BISON/YACC Objetivos: Construir un analizador sintáctico haciendo uso de la herramienta Bison Recursos: Maquina virtual Linux distribución Bodhi LXterminal, Flex, Bison Introducción GNU
Shell Script Sistemas Operativos III - ITS EMT - CETP
Shell Script SHELL tiene dos formas distintas de ejecutar comandos : Archivos binarios Programas compilados y de los cuales existe un ejecutable archivos.exe ó.com en MS-DOS Archivos de texto Contienen
Una Herramienta para el Análisis Léxico: Lex
Una Herramienta para el Análisis Léxico: Lex Alejandro Viloria Lanero ([email protected]) Teoría de Autómatas y Lenguajes Formales Universidad de Valladolid Como hemos ido viendo, el shell de los sistemas
Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)
Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,
FASES DE UN COMPILADOR
FASES DE UN COMPILADOR PROGRAMA FUENTE analizador léxico analizador sintáctico administrador analizador semántico manejador de la tabla generador de código intermedio de errores de símbolos optimizador
Tema 2 Conceptos básicos de programación. Fundamentos de Informática
Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis
Introducción a la programación: Contenido. Introducción
Introducción a la programación: Contenido Introducción a la programación:... 1 Introducción... 1 1. Procesamiento automatizado de información... 1 2. Concepto de algoritmo.... 2 3. Lenguajes de programación....
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos
Introducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Dobles: Es el caso de la instrucción if-else (punto 1.2).
1 1.Introducción Las estructuras de control son instrucciones que nos permiten controlar el flujo de ejecución del programa. Las instrucciones de control se pueden agrupar en instrucciones condicionales
JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.
1 Compiladores / Guía VII / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología JavaCC Parte I Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En la presente
UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS LÉXICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007
UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS LÉXICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis léxico?
TEORÍA. N T f n h g $ S S P f C n S S P f C n S S C h P n S S C h P n S S P P f P n f P
1.- Sea la gramática: S P f C n S C h P n S P n f P f C g C h %token f n h g cuya tabla de reconocimiento LL(1) es: Examen de Traductores, Intérpretes y Compiladores. Convocatoria extraordinaria de Diciembre
TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR
Tema 1. Programación de un computador TEMA 1. CIÓN DE UN COMPUTADOR 1. CONCEPTO DE 2. LENGUAJES DE CIÓN 2.1. LENGUAJE MÁQUINA 2.2. LENGUAJE ENSAMBLADOR 2.3. LENGUAJE DE ALTO NIVEL 3. ALGORITMOS. REPRESENTACIÓN
Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
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
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
Introducción al Diseño de Compiladores. Año
Introducción al Diseño de Compiladores Año 2003 1 BIBLIOGRAFÍA [AHO] Compilers. Principles, Techniques, and Tools Aho, Sethi; Adisson-Wesley 1986 [TEU] Compiladores: Conceptos fundamentales. Teufel ; Addison
8.1. Introdución. %% [b\ t]+ $ ;
8.1. Introdución El lex es un generador de programas diseñado para el proceso léxico de cadenas de caracteres de input. El programa acepta una especificación, orientada a resolver un problema de alto nivel
Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani
Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:
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
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:
DIAGRAMAS DE TRANSICIONES
1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN DIAGRAMAS DE TRANSICIONES Elaborado el Lunes 06 de Septiembre de 2004 I.- INTRODUCCIÓN (extraído de Compiladores: Principios,
JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.
Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una
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.
Yacc/Bison. Índice. Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse()
Yacc/Bison Índice Marina de la Cruz Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse() Formato del fichero de especificación
Tema 2 Introducción a la Programación en C.
Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes
