Analizador de léxico
Un analizador de léxico tiene como función principal el tomar secuencias de caracteres o símbolos del alfabeto del lenguaje y ubicarlas dentro de categorías, conocidas como unidades de léxico. Las unidades de léxico son empleadas por el analizador gramatical para determinar si lo escrito en el programa fuente es correcto o no gramaticalmente.
Algunas de las unidades de léxico no son empleadas por el analizador gramatical sino que son descartadas o filtradas. Tal es el caso de los comentarios, que documentan el programa pero que no tienen un uso gramatical, o los espacios en blanco, que sirven para dar legibilidad a lo escrito.
En la terminología empleada en la construcción de un analizador de léxico se encuentran los siguientes términos. Patrón Representa la regla para que una secuencia de caracteres sea considerada cierta unidad de léxico.
Ejemplo: El patrón para un identificador de Pascal es: Una letra seguida por letras, dígitos o guiones (_) Lexema El valor actual de un conjunto de caracteres que satisfacen un patrón.Ejemplo: Este_es_1_ejemplo Este es el lexema que satisface el patrón de un identificador Token o Ficha El valor asociado a una categoría o unidad de léxico.
Se representa como un número entero o una constante de un byte. Ejemplo: el token de un identificador puede ser 1 ó id (si id fue definida como 1). Unidades de léxico Categorías en que se clasifican las cadenas de caracteres válidos en un lenguaje.
Los caracteres válidos reciben el nombre de alfabeto. Por ejemplo, el alfabeto de Pascal es: A-Z, a-z, 0-9, _, =, :, ;, ,, , -, ‘, «, *, /, (, ), [, ], ., <, >
Y las unidades de léxico para pascal son:
– identificadores
– literales numéricas
– operadores aritméticos
– cadenas de caracteres
– separadores
– operadores relacionales
– operadores lógicos
– comentarios
Con respecto al lenguaje para controlar al ROBOT, tenemos que su alfabeto es:
– n,o,r,t,e,s, ,u,i,c
y las unidades de léxico son:
– órdenes
– (norte, sur, este, oeste, inicio)
– y espacios en blanco.