Buffers y Centinelas (3)

IMPLANTACIÓN DEL ANALIZADOR LEXICO 1. UTILIZAR UN GENERADOR DE A. LEXICOS ( LEX). 2. ESCRIBIR EL A. LEXICO EN UN LENGUAJ

Views 91 Downloads 17 File size 115KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

IMPLANTACIÓN DEL ANALIZADOR LEXICO 1. UTILIZAR UN GENERADOR DE A. LEXICOS ( LEX). 2. ESCRIBIR EL A. LEXICO EN UN LENGUAJE CONVENCIONAL. 3. ESCRIBIR EL A. LEXICO EN LENGUAJE ENSAMBLADOR. ORDEN DE DIFICULTAD CRECIENTE. LOS ENFOQUES MAS DIFICILES A. LEXICOS + RAPIDOS.

PROBLEMA • EL ANALIZADOR LEXICO ES LA UNICA FASE QUE LEE EL PROGRAMA FUENTE CARÁCTER A CARACTER: MUCHO TIEMPO. • LA VELOCIDAD SUPONE PROBLEMA EN EL DISEÑO COMPILADORES.

UN DE

BUFFERS • DOS BUFFERS DE ENTRADA: PREANALISIS EN LA ENTRADA PARA IDENTIFICAR LOS COMPONENTES LEXICOS. • CONSUME MUCHO TIEMPO: TECNICAS ESPECIALIZADAS EN EL MANEJO DE BUFFERS PARA REDUCIR EL # DE OPERACIONES NECESARIAS PARA PROCESAR UN CARÁCTER DE ENTRADA.

PROCESO • BUFFER DIVIDIDO EN DOS MITADES DE N CARACTERES CADA UNA. 1024 O 4096. • SE LEEN N CARACTERES DE ENTRADA EN CADA MITAD DEL BUFFER CON UNA ORDEN DE LECTURA DEL SISTEMA.

E = M * C * * 2 eof

• 2 Apuntadores al buffer de entrada. La cadena de caracteres entre los dos apuntadores es el lexema en curso. • Al principio los dos apuntadores apuntan al del próximo lexema que hay que encontrar. • Apuntador delantero, examina hacia delante hasta encontrar una concordancia con el patrón.

E = M * C * * 2 eof

• Después de haber procesado el lexema, ambos apuntadores se colocan en el carácter situado inmediatamente después del lexema. • Cuando el apuntador delantero está a punto de sobrepasar por la marca intermedia del buffer, se llena la mitad derecha con n nuevos caracteres de entrada. • Sobrepasar el extremo derecho del buffer, se llena la mitad izquierda con N nuevos caracteres de entrada y el apuntador delantero se regresa al principio del buffer.

Programa = Cadena de Caracteres Apuntador Actual

Apuntador de Búsqueda

• Damecar: Mueve el apuntador de búsqueda hacia delante y regresa al carácter siguiente. • Eliminación de espacios en blanco: • MIENTRAS blanco HACER Damecar;

CENTINELAS • ES UN CARÁCTER ESPECIAL QUE NO PUEDE SER PARTE DEL PROGRAMA FUENTE • MARCA EL FINAL DEL BUFFERS. • EOF O FIN DE ARCHIVO.

ESPECIFICACIÓN DE LOS COMPONENTES LÉXICOS • ALFABETO: CONJUNTO FINITO DE SIMBOLOS. EJ: BINARIO,ASCII. • CADENA: SECUENCIA FINITA DE SIMBOLOS. • LONGITUD DE CADENA: lSl • CADENA VACIA: 

• LENGUAJE: CONJUNTO DE CADENAS

OPERACIONES COMPONENTES LEXICOS • UNION • CONCATENACIÓN

• L= {A,B,……Z, a,b,……….z} Alfab.Letras • D={0,1,2,3,4….9} Alfab. Digitos

• L U D = Conjunto de letras y dígitos. • LD= Conjunto de cadenas que consta de una letra seguida de un digito. • L4 = Conjunto de todas las cadenas de 4 letras. • L* = Conjunto de todas las cadenas de letras. • L(LUD): Conjunto de todas las cadenas de letras y dígitos que comienzan con una letra.

EXPRESIONES REGULARES • PERMITE DEFINIR LA ESTRUCTURA. • ES UNA FORMULA PARA DENOTAR LENGUAJES. DENOTA UN CONJUNTO DE CADENAS. • Letra (letra/digito)* Exp. Regular. Identificadores • Letra seguida de cero o mas letras o dígitos. • * : Cero o mas casos.

EJEMPLOS   = (a,b) • a/b = { a, b} • (a/b)(a/b) = { aa, ab, ba, bb} • a* = {, a, aa,aaa,….} • (a/b)*= {,a,aa,…,b,bb,…..} cero o mas casos de una a o una b. = (a*/b*)*. • a/a*b = { a, b, ab, aab….} Cadena a y todas las cadenas que componen de cero o más a seguidas de una b.

DEFINICIONES REGULARES • DEFINIR EXPRESIONES REGULARES. • SECUENCIA DE DEFINICIONES. • • • •

d1  r1 d2  r2 … dn  rn

d1:Nombre r1: Exp. Reg

EJEMPLO • IDENTIFICADOR

• LETRA  A/B/……Z/a/b…../z • DIGITO  0/1/2…/9 • ID  LETRA (LETRA/DIGITO)*

EJERCICIOS • • • • •

X X/Y (XY)/Z (X*/Y*) X/(YZ)*

• EXPRESIONES REGULARES DEFINICIONES REGULARES: • DECLARACIÓN DE UNA MATRIZ • CICLO FOR; PROXIMA CLASE: DIAGRAMAS DE TRANSICIONES.

Y