Sie sind auf Seite 1von 28

Anlisis Lxico

Anlisis Lxico
Qu queremos hacer? Ejemplo: If (i == j)
z=0; else z=1;

La entrada es slo una secuencia de caracteres:


\tif(i==j)\n\t\tz=0;\n\telse\n\t\tz=1;

Meta: Partir la cadena de entrada en subcadenas y clasificar las subcadenas de acuerdo a su rol

Qu es un token?
La salida del analizador lxico en un conjunto de tokens. Un token es una categora sintctica
En Espaol:
Nombres, verbos, adjetivos,

En un lenguaje de programacin
Identificadores, enteros, palabras reservadas, espacios en blanco,

La siguiente etapa, toma los tokens.


Ejm. Los identificadores se tratan diferente que las palabras reservadas.

Tokens
Los token corresponden a conjuntos de cadenas.
Identificadores:cadenas de letras o dgitos que comienzan con una letra.

Enteros: una cadena de dgitos.


Palabras reservadas: else, if, begin,

Espacios en blanco: una secuencia de espacios, nuevas lneas, tabuladores.


Open par: un parntesis izquierdo.

Implementacin del analizador lxico


Una implementacin debe hacer dos cosas:
Reconocer las subcadenas que corresponden a tokens.

Regresar el valor o lexema de un token


El lexema es la subcadena.

Ejemplo
Recordar:
\tif(i==j)\n\t\tz=0; \n\telse\n\t\tz=1:

El par Token-lexema que regresa el analizador lxico:


(Espacio en blanco, \t ) (Palabra reservada, if) (Parentesis abre, () (Identificador, i) (Relacin, ==) (Identificador, j)

Implementacin del analizador lxico


El Analizador Lxico, por lo regular descarta token que no son importantes, token que no contribuyen a generar el rbol.
Ejemplos: Espacios en blanco, comentarios. Pregunta: Qu pasa si quitamos todos los espacios en blanco y comentarios antes de realizar el anlisis lxico?

Mirar adelantado
Dos puntos importantes:
La meta final es particionar la cadena. Esto se implementa leyendo la cadena de izquierda a derecha, reconociendo un token a la vez. Mirar adelantado algunas veces se requiere para decidir donde finaliza un token y donde comienza el ltimo token.
i vs if = vs ==

Aspectos Formales. Definiciones


Alfabeto: es un conjunto finito de smbolos. Por ejemplos, el cdigo mquina se basa en el alfabeto binario A={0,1}; B={0,1,2,3,4,5,6,7,8,9}; conjunto de dgitos C={+,-,*,/}; conjunto de operadores mat. bsicos
Smbolos: Los elementos del vocabulario (alfabeto) de un lenguaje formal se denominan smbolos; en el caso de los lenguajes naturales los conocemos como palabras.

Componentes lxicos: Las ocurrencias mltiples se smbolos (o palabras) se denominan componentes lxicos.
Frase: Una frase es una secuencia de smbolos.

Gramtica (sintaxis): La gramtica o sintaxis de un lenguaje define si una secuencia arbitraria de smbolos es correcta, es decir, si es una frase significativa. Decimos que una frase correcta ser aceptada por el lenguaje.

Cadena: Secuencia (finita) de elementos de un cierto conjunto (alfabeto). De manera anloga al conjunto vaco de la teora de conjuntos, llamaremos a una cadena vaca . La cadena vaca es una cadena que no contiene smbolos.

Produccin: las reglas para la sustitucin de cadenas se denominan producciones. Los smbolos y ::= se usan comnmente para representar producciones. por ejemplo; la regla (produccin) sab ( s::=ab) significa que puede sustituirse s por ab, o que s se define como ab.

Smbolos terminales: Son los smbolos que realmente aparecen en una frase. Nunca aparecer en el lado izquierdo de una produccin. Los smbolos begin, end, if, then, else, son ejemplos de smbolos terminales pertenecientes a la gramtica que describe a PASCAL.

Smbolos no terminales: los smbolos no terminales deben ser definidos por otras producciones (o reglas BNF); es decir, tambin aparecen en el lado izquierdo de las producciones. Los smbolos no terminales son variables sintcticas.

Forma de Backus-Naur (BNF)


Fue creado para definir la estructura sintctica del lenguaje de programacin ALGOL60.
La forma de Backus Naur es un metalenguaje, o sea, un lenguaje con que se describen otros lenguajes.

Forma de Backus-Naur (BNF)


Smbolo . [x] {x} (xy) significado se define como Fin de definicin or alternativa una o ninguna ocurrencia de x nmero arbitrario de ocurrencias de x (0,1,2,3,4,) seleccin (x y)

Lenguajes Regulares
Existen diferentes formalismos para especificar tokens. Los lenguajes regulares son los ms populares.
Teora simple y til Fcil de entender Implementaciones eficientes.

Lenguaje
Def. Sea un conjunto de caracteres. Un lenguaje sobre es un conjunto de cadenas tomadas desde .
( se conoce como el alfabeto)

Ejemplo de lenguajes
Alfabeto = Caracteres del idioma ingles
Lenguaje = sentencias en ingles. No todas las cadenas en el alfabeto ingles forman sentencias.

Alfabeto = ASCII Lenguaje = programas en C


Nota. El conjunto de caracteres ASCII es diferente que el conjunto de caracteres ingles.

Expresiones regulares y lenguajes regulares


Cada expresin regular representa una notacin para un lenguaje regular (un conjunto de palabras).
Si A es una expresin regular entonces escribimos L(A) para referirnos al lenguaje denotado por A

Autmata finito
Expresin Regular = Especificacin.
Autmata finito = implementacin. Un autmata finito consiste de:
Un alfabeto de entrada Un conjunto de estados S Un estado inicial n Un conjunto de estados de aceptacin FS Un conjunto de transiciones estadoestado

Autmata finito
Transicin
s1 a s2

Se lee
En el estado s1 teniendo entrada a moverse al estado s2

Si es el final de la entrada
Si el estado es de aceptacin => aceptar, de otra forma => rechazar Si no existe transicin con smbolo a => rechazar

Grafos de los estados de un Autmata finito


Un estado
Estado de inicio Estado de aceptacin
a

Una transicin

Ejemplo
Un autmata finito que acepte 1
1

Un autmata finito acepta una cadena si podemos seguir las etiquetas de los arcos con los caracteres de la cadena desde el estado de inicio hasta un estado de aceptacin

Otro Ejemplo
Un autmata finito que acepta cualquier cantidad de 1s seguido de un 0.
Alfabeto: {0,1}
1 0

Verificar que 1110es aceptada pero no 111

Otro Ejemplo
Alfabeto {0,1} Que lenguage reconoce lo siguiente:

Autmas deterministas y No deterministas


Autmatas Finitos Deterministas (AFD)
Una transicin por entrada y por estado. No hay movimientos .

Autmatas Finitos No deterministas (AFN).


Puede tener ms de una transicin por entrada y por estado. Puede tener movimientos .

Autmata finito tiene memoria finita.


Necesita slo codificar el estado actual.

Das könnte Ihnen auch gefallen