analisis-lexico-1225209543616213-9

Post on 15-Jul-2015

13 views 0 download

Transcript of 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

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.

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).

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.

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

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

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}

 

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).

 

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}

 

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}

 

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 = {_}

 

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:

 

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

 

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 

 

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

 

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

 

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:

 

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.

 

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

 

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.

 

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.

 

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

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

:

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

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

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.

 

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.

 

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";

 

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 {

 

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);

 

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;

 

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"

 

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;

}

 

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'

 

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

 

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? 

 

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.