Vous êtes sur la page 1sur 6

Componentes léxicos, patrones y lexemas

Creación de tabla de tokens


Análisis léxico (Scanner)
La fase de rastreo (scanner), tiene las funciones de leer el programa fuente como
un archivo de caracteres y dividirlo en tokens.
Función de un analizador léxico
Su principal función consiste en leer la secuencia de caracteres del programa
fuente, carácter a carácter, y elaborar como salida la secuencia de componentes
léxicos que utiliza el analizador sintáctico.
¿Cómo lo hace?
El analizador sintáctico emite la orden al analizador léxico para que agrupe los
caracteres y forme unidades con significado propio llamados componentes léxicos
(tokens).
¿Qué es un token?
Los tokens son las palabras reservadas de un lenguaje, secuencia de caracteres
que representa una unidad de información en el programa fuente.
Ejemplo: if, else, while, int, etc.
Los componentes léxicos
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.
Otras funciones
Manejo de apertura y cierre de archivo, lectura de caracteres y gestión de posibles
errores de apertura.
Eliminar comentarios, espacios en blanco, tabuladores y saltos de línea.
Contabilizar número de líneas y columnas para emitir mensajes de error.
Ventajas
Al separar el análisis léxico y análisis sintáctico es que facilita la transportabilidad
del traductor si se decide realizar cambios posteriores, por ejemplo cambiar las
etiquetas begin-end por llaves de apertura y cierre { }.
Componentes léxicos, patrones y lexemas
Componente léxico
Es la secuencia lógica y coherente de caracteres relativo a una categoría:
identificador, palabra reservada, literales (cadena/numérica), operador o carácter de
puntuación, además de que un componente léxico puede tener uno o varios
lexemas.
Patrón
Es una regla que genera la secuencia de caracteres que puede representar a un
determinado componente léxico (expresión regular).
¿Qué es una expresion regular?
Frecuentemente se les llaman patrones, ya que son expresiones que describen a
un conjunto de cadenas.
Lexema
Es una cadena de caracteres que concuerda con un patrón que describe un
componente léxico (valor de cadena).
Ejemplo
Ejemplo de una cadena de código: const pi = 3.1416;
Nota
En la practica los componentes léxicos suelen tener solo un atributo.
Para efectos de diagnóstico, puede considerarse tanto el lexema para un
identificador como el numero de línea en el que se encontró por primera vez. Esta
información puede ser almacenada en la tabla de símbolos para el identificador.
Creación de tabla de tokens
Almacena todos los nombres declarados en el programa y sus atributos (tipo, valor,
dirección, parámetros, etc.).
Funciones
Verificar que la sintaxis sea correcta
Ayudar en la generación apropiada de código.
Ambas funciones se realizan insertando o recuperando desde la tabla de símbolos
los atributos de las variables usadas en el programa fuente.
Atributos
Tales como: el nombre, tipo, dirección de almacenamiento y dimensión de una
variable, usualmente se encuentran explícitamente en las declaraciones o más
implícitamente a través del contexto en que aparecen los nombres de variables en
el programa.
Objetivo
Registrar información que se comparte entre varias etapas y que permite administrar
los recursos asociados a las entidades que manipulará el programa.
Ejemplo
if Plazo >= 30
then Tasa := Base + Recargo / 100
else Tasa := Base
[if] [Plazo] [>=] [30]
[then] [Tasa] [:=] [Base] [+] [Recargo] [/] [100]
[else] [Tasa] [:=] [Base]
[59] [Plazo] [>=] [30]
[then] [Tasa] [:=] [Base] [+] [Recargo] [/] [100]
[else] [Tasa] [:=] [Base]
[59] [27] [80] [28]
[60] [27] [85] [27] [70] [27] [73] [28]
[61] [27] [85] [27]

IF ID >= CTE
THEN ID := ID + ID / CTE
ELSE ID := ID

Vous aimerez peut-être aussi