Вы находитесь на странице: 1из 32

Unidad 3

ing. Reinaga

Anlisis lxico

Esta fase consiste en leer el texto del cdigo fuente carcter a carcter e ir generando los tokens (caracteres relacionados entre si)

ing. Reinaga

Los tokens pueden ser de dos tipos; cadenas especificas como palabras reservadas:

ing. Reinaga

Tokens

ing. Reinaga

Y no especificas, como identificadores, constantes y etiquetas: Identificadores: numero $variable1 otro$paciente str _el4alumno
ing. Reinaga 5

public class HolaMundo{ String str=Hola Mundo; public static void main(String[] args){ System.out.println(str); } }
ing. Reinaga 6

El anlisis lxico tiene como propsito agrupar las expresiones (tokens) por ejemplo:

distancia = velocidad + aceleracin * 30 identificador distancia smbolo de asignacin = identificador velocidad signo + identificador aceleracion signo * el numero entero 30
Normalmente los espacios son eliminados en el proceso
ing. Reinaga 7

Resumiendo

El analizador lxico lee los caracteres que componen el texto del programa fuente y suministra tokens al analizador sintctico.

ing. Reinaga

Automatas finitos
Los autmatas finitos reciben como entrada informacin que procesan y en funcin de ella emiten una salida Un autmata finito recibe una palabra, la cual debe procesar por medio de un recorrido a travs de los diferentes estados que integran el automata, y si al final del procesamiento de sta el recorrido termina en un estado o posicin de aceptacin, se dice que la palabra forma parte del lenguaje.

ing. Reinaga

Autmatas finitos
Un autmata finito es una quntupla que denotaremos de manera genrica por: M=(Q,,q0,,F) donde: Q es un conjunto finito cuyos elementos llamaremos estados. es un alfabeto que llamamos alfabeto de entrada. q0Q es un estado sealado que llamamos estado inicial. F es un subconjunto de Q no vaco, cuyos elementos llamamos estados finales. es una aplicacin de QQ , que llamamos funcin de transicin.
ing. Reinaga 10

Terminologia basica

Una palabra que pertenece a un lenguaje L(G) realmente es una cadena de smbolos o caracteres, y por esto la relacin existente entre los smbolos, cadenas, lenguajes, alfabetos y gramaticas es importante.

ing. Reinaga

11

Cadena. Consiste en una secuencia de smbolos yuxtapuestos (uno seguido del otro)
Sean = {0,1,2} w= 0

x = 02

y = 011

z = 12012

En este caso w, x, y, z son cadenas formadas con los smbolos del alfabeto
ing. Reinaga 12

Ejemplo
1 0

Aqu se tiene que

1 = {0,1} es el alfabeto q q E = {q, q, q } es conjunto de estados s = {q} es el estado inicial F = {q } conjunto de estados finales o aceptacin : E x E es la funcin para determinar el siguiente estado
ing. Reinaga 13

En el diagrama de transicin se puede observar que pertenece al lenguaje indicado por la expresin regular (0 1)*01 y por ejemplo las cadenas 10001 y 101 pertenecen al lenguaje, mientras que la cadena 111001110 no pertenece. 0 1
0 q 0 q 1 q q

ing. Reinaga

14

Practica Sea = {x, y} E = {q, q, q, q, q} s = {q} F = {q3 } : E x Y la expresin regular x(x y)*yx, generar el diagrama del autmata finito.

ing. Reinaga

15

la clase Pattern de java

ing. Reinaga

16

Intervalos de caracteres
[abc] a, b, o c [^abc] Cualquier caracter excepto a, b, o c (negacion) [a-zA-Z] Desde la a a la z o desde la A hasta la Z, incluidos [a-d[m-p]] Desde la a hasta la d, o desde la m a la p: [a-dm-p] (union) [a-z&&[def]] La d, la e, o la f (interseccion) [a-z&&[^bc]] Desde la a hasta la z, excepto la b y la c: [ad-z] (resta) [a-z&&[^m-p]] Desde la a hasta la z, excepto desde la m hasta la p: [a-lq-z](resta)

ing. Reinaga

17

Intervalos de caracteres predefinidos


. Cualquier caracter (puede que no se incluyan los terminadores de linea) d Un numero: [0-9] D Todo menos un numero: [^0-9] s Un espacio en blanco: [ x0Bf ] S Todo menos un espacio en blanco: [^s] w Una letra: [a-zA-Z_0-9] W Todo menos letras: [^w] Intervalos de caracteres POSIX (solo para US-ASCII)

ing. Reinaga

18

{lower} {upper} {alpha} {digit} {alnum} {punct}

{graph} {print}

Letras minusculas: [a-z] Letras mayusculas:[A-Z] Letras:[{lower}{upper}] Numero decimal: [0-9] Caracter alfanumerico:[{alpha}{digit}] Signos de puntuacion: uno de !"#$%&'()*+,./:;<=>?@[]^_`{|}~ Los caracteres visibles: [{alnum}{punct}] Los caracteres imprimibles: [ {graph}]

ing. Reinaga

19

{blank} {cntrl} {xdigit} {space}

Un espacio o un tabulador: [ ] Un caracter de control: [x00-x1Fx7F] Un numero hexadecimal: [0-9a-fA-F] Un espacio: [ x0Bf ]

ing. Reinaga

20

Limites
^ $ B A G z Comienzo de una lnea Fin de una lnea Fin de palabra No es fin de palabra El principio de la cadena de entrada El final del ultimo patron encajado El final de la entrada pero el terminador final, si existe El final de la cadena de entrada

ing. Reinaga

21

Cuantificadores
X? X* X+ X{n} X(n,} X{n,m} X, una o ninguna vez X, cero o ninguna vez X, una o mas veces X, exactamente n veces X, por lo menos n veces X, por lo menos n veces pero no mas de m veces

ing. Reinaga

22

Operadores lgicos
XY X|Y (X) X seguido de Y XoY X, como un grupo

ing. Reinaga

23

Manejo de localidades de memoria (Buffers)

La forma ms fcil de leer un programa es carcter por carcter pero es ineficiente.


La forma ms eficiente es realizar una copia a la memoria de todo el cdigo fuente. Pero esto en la gran mayora de las ocasiones es imprctico por las dimensiones de los programas. Para solucionar este problema se sugiere utilizar buffers.

ing. Reinaga

24

Manejo de buffers

ing. Reinaga

25

Tabla de simbolos

Una tabla de smbolos es una estructura de datos que usa el proceso de traduccin de un lenguaje de programacin, por un compilador o un intrprete, donde cada smbolo en el cdigo fuente de un programa est asociado con informacin tal como la ubicacin, el tipo de datos y el mbito de cada variable, constante o procedimiento.

ing. Reinaga

26

ing. Reinaga

27

El primer paso consiste en crear un escner, el cual se encarga de verificar que no existan caracteres no presentes en el lenguaje.

ing. Reinaga

28

Manejo de errores lxicos.


Son pocos los errores que se pueden detectar al hacer anlisis lxico fi (a == f(x)) //Error de sintaxis

Pero puede existir algn error si ninguno de los patrones con cuerda con el prefijo de entrada

ing. Reinaga

29

Tcnicas de recuperacin de errores


Borrar un carcter extrao Insertar un carcter que falta Reemplazar un carcter incorrecto por otro correcto Intercambiar dos caracteres adyacentes

ing. Reinaga

30

Generadores de cdigo lxico: Lex y Flex.


Investigacin

ing. Reinaga

31

ing. Reinaga

32

Вам также может понравиться