componentes léxicos

10
Docente: Ing. Ángel A. García Esquivel Alumno: Arnold de la Cruz Gonzalez IDENTIFICACIÓN DE LEXEMAS Y COMPONENTES LÉXICOS A PARTIR DE UN LENGUAJE. 1 Instituto Tecnológico Superior De Villa La Venta Huimanguillo, Tab. LENGUAJES Y AUTOMATAS Ing. En Sistemas Computacionales 6º “A”

Upload: itslv

Post on 28-Mar-2023

1 views

Category:

Documents


0 download

TRANSCRIPT

Docente:Ing. Ángel A. García Esquivel

Alumno:

Arnold de la Cruz Gonzalez

IDENTIFICACIÓN DE LEXEMASY COMPONENTES LÉXICOS APARTIR DE UN LENGUAJE.

1

Instituto Tecnológico Superior DeVilla

La Venta Huimanguillo, Tab.

LENGUAJES Y AUTOMATAS

Ing. En Sistemas Computacionales6º “A”

Un analizador léxico es un módulo destinado a leer caracteresdel archivo de entrada, donde se encuentra la cadena aanalizar, reconocer subcadenas que correspondan a símbolosdel lenguaje y retornar los tokens correspondientes y susatributos. Escribir analizadores léxicos eficientes “a mano”puede resultar una tarea tediosa y complicada, para evitarlase han creado herramientas de software los generadores deanalizadores léxicos que generan automáticamente unanalizador léxico a partir de una especificación provista porel usuario.

Análisis léxico (Scanner)

La fase de rastreo (scanner), tiene las funciones de leer elprograma fuente como un archivo de caracteres y dividirlo entokens.

Los tokens son las palabras reservadas de un lenguaje,secuencia de caracteres que representa una unidad deinformación en el programa fuente. En cada caso un tokenrepresenta un cierto patrón de caracteres que el analizadorléxico reconoce, o ajusta desde el inicio de los caracteresde entrada. De tal manera es necesario generar un mecanismocomputacional que nos permita identificar el patrón detransición entre los caracteres de entrada, generando tokens,que posteriormente serán clasificados. Este mecanismo esposible crearlo a partir de un tipo específico de máquina deestados llamado autómata finito.

2

ComponentesLéxico

s

Función del analizador léxico:

Es la primera fase de un compilador. Su principal funciónconsiste en leer la secuencia de caracteres del programafuente, carácter a carácter, y elaborar como salida lasecuencia de componentes léxicos que utiliza el analizadorsintáctico.

El analizador sintáctico emite la orden al analizador léxicopara que agrupe los caracteres y forme unidades consignificado propio llamados componentes léxicos (tokens).

Los componentes léxicos representan:

Palabras reservadas: if, while, do Identificadores: variables, funciones, tipos definidos

por el usuario, etiquetas Operadores: =, >, =, <=, +, * Símbolos especiales: ( ), { } Constantes numéricas: literales que representan valores

enteros y flotantes. Constantes de carácter: literales que representan

cadenas de caracteres.

El analizador léxico opera bajo petición del analizadorsintáctico devolviendo un componente léxico conforme elanalizador sintáctico lo va necesitando para avanzar en lagramática. Los componentes léxicos son los símbolosterminales de la gramática. Suele implementarse como unasubrutina del analizador sintáctico. Cuando recibe la orden

3

“obtén el siguiente componente léxico”, el analizador léxicolee los caracteres de entrada hasta identificar el siguientecomponente léxico.

Además el analizador léxico es responsable de:

Manejo de apertura y cierre de archivo, lectura decaracteres y gestión de posibles

Errores de apertura. Eliminar comentarios, espacios en blanco, tabuladores y

saltos de línea. Inclusión de archivos y macros. Contabilizar número de líneas y columnas para emitir

mensajes de error. Una de las ventajas de separar el análisis léxico y

análisis sintáctico es que facilita la transportabilidaddel traductor si se decide realizar cambios posteriores,por ejemplo cambiar las etiquetas begin-end por llaves deapertura y cierre { }.

El papel del analizador léxico

4

La función primordial es agrupar caracteres de la entrada entokens.

Estos tokens son suministrados(“bajo demanda”) al

analizador

sintáctico.

5

Pero, además:

Procesar directivas al compilador Introducir información preliminar en la tabla de

símbolos. Eliminar separadores innecesarios (cuando no lo ha hecho

un preprocesador) Sustituir macros Formatear y listar la fuente

A, veces cuando el lenguaje es sintácticamente complejo, dosfases:

Fase de examen Fase de análisis (propiamente dicho).

Los tokens se pasan como valores “simples”

Algunos tokens requieren algo más que su propiaidentificación:

Constantes: su valor Identificadores: el string Operadores relacionales: su identificación

6

Por lo tanto, el scanner debe realizar, a veces, una doblefunción: – identificar el token – “evaluar” el token.

Es una secuencia de caracteres en el programa fuente, quecoinciden con el patrón para un token y que el analizadorléxico identifica como una instancia de ese token.”

Token: “es un par que consiste en un nombre de tokeny un valor de atributo opcional. El nombre del tokenes un símbolo abstracto que representa un tipo deunidad léxica; por ejemplo, una palabra claveespecífica o una secuencia de caracteres de entradaque denotan un identificador. Los nombres de los

7

Lexemas

tokens son los símbolos de entrada que procesa elanalizador sintáctico” (Aho, Lam, Sethi, & Ullman,2008).

Ejemplo de una cadena de código: const pi = 3.1416;

Lexemas Componente léxico PatrónConst Const Const.= Relación < o <= o = o <> o >

o >=Pi identificador Letra seguida de

letras o números.3.1416 número Cualquier literal

numérica.“hola mundo” literal Caracteres entre

comillas.

El analizador léxico recoge información sobre los componentesléxicos en sus atributos asociados. Los tokens influyen enlas decisiones del análisis sintáctico, y los atributos, enla traducción de los tokens. En la práctica los componentesléxicos suelen tener solo un atributo.

Para efectos de diagnóstico, puede considerarse tanto ellexema para un identificador como el número de línea en elque se encontró por primera vez. Esta información puede seralmacenada en la tabla de símbolos para el identificador(estructura de datos).

Para la cadena E=M*C**2 de ejemplo, los componentes léxicosy los valores de atributo asociado son:

8

<identificador, atributo para el símbolo E>

<op_asignacion>

<identificador, atributo para el símbolo M>

<op_multiplica>

<identificador, apuntador al símbolo C>

<op_exponente>

<número, atributo valor 2>

9

Compiladores: principios, técnicas y herramientasBy Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman pagina: 88

http://10380054.galeon.com/u5.htm

https://prezi.com/tkzruuwqwax8/componentes-lexicos-patrones-y-lexemas/

http://www.paginasprodigy.com/edserna/cursos/compilador/notas/Notas2.pdf

10

Bibliografia