analisis-lexico-1225209543616213-9

35
 En un compilador, el análisis lineal se ll ama análisis lineal o exploración. Por análisis li neal entendemos la cadena de caracteres que constituye el programa fuent e se lee de izquierda a derecha y se agrupan en component es léxicos, que son secuencias de caracteres que tiene un signif icado colectiv o. Por ej emplo, en análisis léxico los caracteres de las siguientes proposiciones de asi gnación

Transcript of analisis-lexico-1225209543616213-9

Page 1: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 1/35

 

En un compilador, el análisis lineal se llama análisislineal o exploración. Por análisis lineal entendemos

la cadena de caracteres que constituye el programafuente se lee de izquierda a derecha y se agrupan encomponentes léxicos, que son secuencias decaracteres que tiene un significado colectivo. Por

ejemplo, en análisis léxico los caracteres de lassiguientes proposiciones de asignación

Page 2: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 2/35

 

Los espacios en blanco (delimitadores) que separan loscaracteres de estos componentes léxicos normalmente se

eliminan durante el análisis léxico.

Page 3: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 3/35

 

Una expresión regular denota un conjunto desecuencias de símbolos válidas que se construyen enbase al alfabeto de un lenguaje. Generalmente estosconjuntos se representan como:

Es una expresión regular que denota el conjunto vacío (el conjunto no contiene secuencias desímbolos).

Page 4: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 4/35

 

Una secuencia de símbolos S es una expresiónregular que denota a un conjunto que contiene aS. Operaciones sobre Lenguajes

Es una expresión regular que denota al conjuntoque contiene la secuencia vacía.

Page 5: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 5/35

 

*Son una notación para definir lenguajes

*Se ha demostrado que pueden expresar la clase delos lenguajes regulares

* Permiten hacer una definición algebraica de unlenguaje

* Se expresa el lenguaje de manera declarativa

Page 6: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 6/35

 

Dadas dos expresiones regulares E1, E2, el resultadode aplicar

cualquiera de estas tres operaciones, da comoresultado otra expresión regular:

*Unión (E1 E2) = {x | x E1 ´ox E2 ´o x E1

E2}.*Concatenación E1 E2 = {xy | x E1, y  E2}

*Clausura o Estrella de Kleene (E1* ) = i>=E1i

Page 7: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 7/35

Construir una expresión regular es realizar operacionessobre el alfabeto de un lenguaje. Podemos decir que el

lenguaje, en su aspecto de léxico, está conformado porlas operaciones

Unión de L y M.

LUM = { S | S e s t á e n L óS e s tá e nM}Concatenación de L y M.LM = { s t | s e s t á e n L y t está en M}

 

Page 8: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 8/35

Cerradura Kleene.

(L se repite de 0 a infinito)Cerradura Positiva.

( L se repite de 1 a infinito).

 

Page 9: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 9/35

Como se ve, las expresiones regulares son operacionesque se realizan sobre conjuntos de símbolos quepertenecen al alfabeto de un lenguaje. Estosconjuntos se describen colocando a los símbolos que

pertenecen a ellos entre llaves. Por ejemplo, loscaracteres que ubicamos como letras podríanconformar el conjunto

{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}

 

Page 10: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 10/35

Si los elementos del conjunto tienen un ordenconocido o asociado al código ASCII se puededescribir colocando el primer símbolo y el últimoseparados por un guión (-) como{A-Z a-z}

Para hacer más simple la construcción de unaexpresión regular, se designa bajo un nombre alconjunto con el cual se trabajará. así el conjunto letrase puede describir comoL = {A-Z a-z}

 

Page 11: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 11/35

Cuando a un conjunto o a una expresión regular se le

da un nombre, ésta recibe el nombre de definiciónregular. Así, la expresión regular para unidentificador será:

ID=L (L | D | G) *si las definiciones sobre las cuales está construidason:L= {A-Z a-z}D = {0123456789}G = {_}

 

Page 12: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 12/35

Por ejemplo, en Ada los identificadores estánformados por letras, dígitos o guiones, pero el guiónno puede ser el último caracter. La expresión regularcon la cual se puede conformar el patrón para estaunidad de léxico puede ser:ID_ada = L (L | D) * (G (L | D ) + ) *Una expresión regular es un método formal paradescribir un patrón y puede ser empleada paraconstruir un analizador léxico que lo reconozca enuna computadora. De hecho, la expresión sufre unaserie de transformaciones para llegar a ser explotadacomo tabla:

 

Page 13: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 13/35

Expresión Regular

se convierte enAutómata Finito No

deterministico (NFA)

se convierte en

Autómata Finito

Deterministico (DFA)

que se representa como

Tabla

 

Page 14: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 14/35

Un autómata finito es un conjunto de nodos y aristas

que representan trayectorias para generar unaexpresión bajo un alfabeto. Un diagrama detransición es un autómata finito. Los autómatasfinitos se clasifican en:

* Autómatas finitos no determinísticos. NFA 

* Autómatas finitos determinísticos.DFA 

 

Page 15: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 15/35

Un NFA esa un modelo matemático que consiste de:1.- Un conjunto de estados.2.- Un conjunto de símbolos de entrada.

3.- Una función de transición que corresponde paresestado-símbolo a conjuntos de estados.4.- Un estado So que denota como el estado inicial.5.- Un conjunto de estados F que denotan los estados

de aceptación o finales.Un NFA no tiene restricciones para que exista mas deuna transición con el mismo nombre a diferentesestados

 

Page 16: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 16/35

por lo que en una representación tabular no esposible determinar demanera única el estado destino para un símbolodeterminado. Por ejemplo, el siguiente diagrama

representa la expresión(a | b)* a b b

 

Page 17: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 17/35

Un DFA es un caso especial de NFA en el que ningúnestado tiene transiciones para diversos estados bajo elmismo símbolo y no se permiten transiciones épsilon.Los diagramas de transición son autómatasdeterminísticos. Por ejemplo, el DFA de (a | b)* a b bpuede ser:

 

Page 18: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 18/35

que podría ser muy aproximado al diagrama detransición que construiríamos para la expresión.

 

Page 19: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 19/35

La expresión regular del autómata es: a*b*.

Existen muchas equivalencias con respecto a

expresiones regulares basadas en las

correspondientes igualdades de lenguajes. Por ejemplo sean r, s y t expresiones regulares sobre el

mismo alfabeto 7 . Entonces:

1. (rs)t = r(st)

2. r + s = s + r 3. (r + s)t = rt + st

4. (r*)* = r*

5. r(s + t) = rs + rt

 

Page 20: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 20/35

Para la implementación de la tabla de símbolos, noshemos ayudado de la librería STL. Hemos hecho usodel contenedor STL_HASHMAP. El acceso se realizaaplicando una función hash sobre el char * delidentificador del símbolo. Para mayor legibilidad y facilidad, hemos implementado la clase

c_tabla_simbolos. Realiza las operaciones quenecesitamos, y se las implementa haciendo uso delcitado contenedor hash.

 

Page 21: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 21/35

Debido a que necesitaremos más de una tabla endeterminados momentos, y a su vez, una jerarquíaentre las tablas, hemos implementado también laclase c_almacen_tablas. Dicha clase hace uso del

contenedor STL_STA CK. A continuación se muestran los diagramas de lasclases implementadas en notaciónUML.

 

Page 22: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 22/35

:

Page 23: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 23/35 

Page 24: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 24/35

El método show de la clase c_tabla_simbolos sirvepara llamar a los métodos show de cada símboloalmacenado. De esa manera se realiza el volcadopedido.

En cuanto a la clase c_almacen_tablas, hemosimplementado las operaciones avanzar, retroceder y enderezar. Sirven para poder movernos dentro de lapila sin perder elementos. Esto significa, que en un

momento dado, podemos ejecutar avanzar sobre lapila, y la cima pasa a ser la tabla de símbolos previa.

 

Page 25: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 25/35

Hemos supuesto que esto puede ser provechoso paralas operaciones en las que haya que buscar si unsímbolo se encuentra en la tabla de símbolos actual oen cualquiera de las tablas previas de la jerarquía. Al

utilizar internamente dos pilas, una llamadaposterior a retroceder dejaría la pila en su situaciónoriginal. Enderezar se utiliza para regresar la pila a suposición original desde cualquier posición.

 

Page 26: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 26/35

La clase Parse::Lex nos permite crear un analizadorléxico. La estrategia seguida es mover el puntero de

búsqueda dentro de la cadena a analizar utilizandoconjuntamente el operador pos() y el ancla \G.> cat -n tokenizer.pl1 #!/usr/local/bin/perl

23 require 5.004;4 #BEGIN { unshift @INC, "../lib"; }5

6 $  ̂W = 0;7 use Parse::Lex;8 print STDERR " V ersion$Parse::A Lex:: V ERSION\n";

 

Page 27: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 27/35

9

10 @token = (11 qw(12 A DDOP [-+]13 LEFTP [\(]

14 RIGHTP [\)]15 INTEGER [1-9][0-9]*16 NE WLINE \n17 ),

18 qw(STRING), [qw(" (?:[^"]+|"")* ")],19 qw(ERROR .*), sub {

 

Page 28: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 28/35

20 die qq!can\'t analyze: "$_[1]"\n!;21 }22 );23

24 Parse::Lex->trace;25 $lexer = Parse::Lex->new(@token);2627 $lexer->from(\*D ATA);

 

Page 29: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 29/35

27 $lexer->from(\*D ATA);28 print "Tokenization of D ATA:\n";2930 TOKEN:while (1) {

31 $token = $lexer->next;32 if (not $lexer->eoi) {33 print "Record number: ", $lexer->line, "\n";34 print "Type: ", $token->name, "\t";

35 print "Content:->", $token->text, "<-\n";36 } else {37 last TOKEN;

 

Page 30: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 30/35

38 }39 }4041 __END__42 1+2-543 "This is a multiline44 string with an embedded "" in it"45 this is an invalid string with a "" in it"

 

Page 31: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 31/35

Entrada:

function main(){/* Otra prueba mas ! */ var a = 3// var b = 2/* a debería estar en la tabla de símbolos, b no !

*/

 var i var v = new Array (101)

for (i=0; i<100; i+=5){ v[i]=i;

}

 

Page 32: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 32/35

for (i=0; i<100; i+=5){

document.write(v[i], " ");}document.write("\n");

}

main();// Fin de la pruebaSalida:

Leyendo del fichero 'prueba10'

 

Page 33: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 33/35

 ANA RAQUEL GARCIA FALLA

YUDY MERCEDES LOSADAROMERO

 

Page 34: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 34/35

* En que se clasifica las

expresiones autónomas finitas? 

*  Cual es la funcionalidad de las

expresiones regulares? 

 

Page 35: analisis-lexico-1225209543616213-9

5/13/2018 analisis-lexico-1225209543616213-9 - slidepdf.com

http://slidepdf.com/reader/full/analisis-lexico-1225209543616213-9 35/35

*  El lenguaje en su aspecto léxicoesta compuesto de queoperaciones y de ejemplo de cada

una de ellas.