• No se han encontrado resultados

clase3-LP-AnalisisLexico

N/A
N/A
Protected

Academic year: 2020

Share "clase3-LP-AnalisisLexico"

Copied!
18
0
0

Texto completo

(1)

LENGUAJES DE

PROGRAMACIÓN

CLASE N°3

CLASE N°3

Leissi M. Castañeda León

(2)

¿Que veremos hoy?

1. Introducción

(3)

1.- Introducción

Los sistemas que implementan ciertos lenguajes

deben analizar código fuente, de acuerdo con el

enfoque específico de implementación.

Todo el análisis sintáctico está basado en la

(4)

Introducción (cont.)

La parte de análisis sintáctico de un procesador

del lenguaje, consiste de dos partes:

Una parte de bajo nivel llamado analizador léxico

(matemáticamente, un autómata finito basado en una (matemáticamente, un autómata finito basado en una gramática regular).

Y una parte de alto nivel llamado analizador

(5)

Introducción (cont.)

El uso de BNF para describir la sintáxis tiene

las siguientes razones:

Provee una clara y concisa descripción de la

sintáxis

sintáxis

El parser puede estar basado directamente en la

descripción BNF

Los Parsers basados en BNF son fáciles de

(6)

Introducción (cont.)

Razones para separar el análisis léxico del

sintáctico:

Simplicidad

– Enfoques menos complejos pueden

ser usados para el análisis léxico; separándolos

simplifica el parser.

Eficiencia

– La separaración permite la

optimización del analizador léxico.

Portabilidad

– Algunas partes del analizador

(7)

2.- Análisis Léxico

Un analizador léxico es un emparejador de

patrones para cadenas de caracteres.

Un analizador léxico es un “front-end” para el

parser.

parser.

Busca en el fuente del programa a los

Lexemas

Se identifican los lexemas mediante un emparejador de patrones de caracteres, los cuales son asociados a una categoría léxica llamada token.

(8)

Análisis Léxico (cont.)

Consideremos el siguiente ejemplo

Antes: procesar todo el archivo fuente, y retornar los lexemas y

tokens.

(9)

Análisis Léxico (cont.)

Lo único que vera el analizador sintáctico es la

salida del analizador léxico, un lexema a la vez.

El análisis léxico ignora los comentarios,

El análisis léxico ignora los comentarios,

espacios en blanco, pues no tienen ningún

significado dentro del programa.

El analizador léxico detecta errores sintácticos

(10)

Análisis Léxico (cont.)

El analizador léxico es un función que usualmente

llamada por el parser cuando necesita el siguiente token.

Tres enfoques para construir un analizador lexico:

Escribir una descripción formal de los tokens y usar una

herramienta software que construya una tabla-manejadora dada herramienta software que construya una tabla-manejadora dada una descripción de los analizadores léxicos

Diseñar un diagrama de estados que describa los tokens y escribir

un programa que implemente el diagrama de estados

Diseñar un diagrama de estados que describa los tokens y

construir a mano una implementacion de tabla-manejadora del diagrama de estados

(11)

Análisis Léxico (cont.)

Diseño del diagrama de estados:

Es un grafo dirigido

los nodos son etiquetados con nombres de estados

los arcos son etiquetados con los caracteres entrantes que

causan dichas transiciones causan dichas transiciones

Los arcos contienen ademas accioens que debe realzar

elanalizador lexico cuando una transición es tomada

Un diagrama de estados ingenuo debería tener una transición para cada estado en cada caracter en la fuente del lenguaje

(12)

Análisis Léxico (cont.)

En muchos casos, las transiciones pueden ser

combinadas para simplificar el diagrama de

estados.

Cuando se reconoce un identificador, todas las letras mayúsculas y minúsculas son equivalentes.

mayúsculas y minúsculas son equivalentes.

Usar una clase caracter que incluya todas las letras.

Cuando se reconoce un literal entero, todos los dígitos son equivalentes.

(13)

Análisis Léxico (cont.)

Las palabras reservadas e identificadores

pueden ser reconocidos juntos (en vez de tener

una parte del diagrama para cada palabra

reservada)

Usar una tabla de búsqueda para determinar si un posible identificador es de hecho una palabra

(14)

Análisis Léxico (cont.)

Subprogramas utilitarios convenientes:

getChar - obtiene el siguiente caracter de la entrada, lo coloca dentro de la variable global nextChar,

tambien determina su clase y coloca la clase en en la variable global charClass

variable global charClass

addChar – pone el caracter proveniente de nextChar dentro del lugar del que el lexema se está acumulando,

lexeme

lookup - determina si una cadena en el lexeme es una palabra reservada (retorna el token asociado si es

(15)
(16)

Análisis Léxico (cont.)

Implementación (se asumen inicializaciones):

int lex() {

getChar();

switch (charClass) {

case LETTER:

addChar(); addChar();

getChar();

while (charClass == LETTER || charClass == DIGIT)

(17)

Análisis Léxico (cont.)

case DIGIT: addChar(); getChar();

while (charClass == DIGIT) {

addChar();

getChar();

}

return INT_LIT;

break;

} /* Fin de switch */

(18)

Referencias

Referencias

Referencias

Referencias

Bibliográficas

Bibliográficas

Bibliográficas

Bibliográficas

Referencias

Documento similar

Los datos de la seguridad de Spikevax en adolescentes se han recogido de un estudio clínico en curso en fase 2/3, aleatorizado, controlado con placebo y con enmascaramiento para

El Programa de Mecenazgo organiza un concurso para "Amigos del IAC" en el cual podrán realizar una propuesta de observación para un telescopio robótico 1. Aquellas que

Elaborar el Diagrama de Pareto a partir de estudios de casos aplicando el aprender haciendo para resolver problemas de la vida diaria y la gestión

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

El diagrama adjunto permite visualizar cada una de las etapas, así como una propuesta secuencial para su ejecución: el proceso inicia con la sensibilización sobre la urgencia

II.- CIMENTACIONES, MUROS Y ESTRUCTURAS EN CONTACTO Micropilote Ø150. TODOS

El PE ha propuesto la incorporación de tres modificaciones sustanciales: incluir entre las «defi- ciencias generalizadas del Estado de Derecho» la afectación o amenaza a los

La realización de perfiles de conductividad eléctrica en sondeos profundos del área de estudio ha permitido constatar la existencia de una estratificación importante del agua