RETO MES DE ABRIL .............................docx
Clase6 conceptos del analisis lexico
1. Clase # 6 – Conceptos del Análisis Léxico
Por: Ing. Marvin Parada, Compiladores Ciclo I-2016 Página 1
UNIVERSIDAD “GERARDO BARRIOS”
COMPILADORES E INTÉRPRETES, CICLO I – 2016
DOCENTE: ING. MARVIN OSMARO PARADA
CLASE # 6
CONCEPTOS GENERALES SOBRE ANALISIS LEXICO
OBJETIVO
Definición de conceptos generales sobre la unidad II, Análisis Léxico.
1. Token
2. Patrón
3. Lexema
4. Atributo
5. Gramática
6. Alfabeto
7. Símbolo
8. Expresión Regular
9. Diagrama y Tabla de Transición
10. Autómata
11. Autómata Finito
12. Autómata Finito Determinista
13. Autómata Finito No Determinista
14. Autómata de Pila
15. Autómata de Turing
¿QUÉ ENTENDEMOS POR LEXICO?
El léxico de un lenguaje natural está constituido por todas las palabras y símbolos que lo
componen. Para un lenguaje de programación la definición también es válida.
En un lenguaje de programación el léxico lo constituyen todos los elementos individuales del
lenguaje, denominados frecuentemente en inglés tokens. Así son tokens: las palabras reservadas
del lenguaje, los símbolos que denotan los distintos tipos de operadores, identificadores (de
variables, de funciones, de procedimientos, de tipos, etc.), separadores de sentencias y otros.
¿QUÉ ENTENDEMOS POR SINTAXIS?
En lingüística, sintaxis es el estudio de la función que desempeña cada palabra en el entorno de
una frase. Mientras que semántica es el estudio del significado de una palabra tanto a nivel
individual como en el contexto de una frase.
En los lenguajes de programación, sintaxis es un conjunto de reglas formales que especifican la
composición de los programas a base de letras, dígitos y otros caracteres. Por ejemplo, las reglas
de sintaxis especifican en C/C++ que cada sentencia o línea de programa debe terminar con un
2. Clase # 6 – Conceptos del Análisis Léxico
Por: Ing. Marvin Parada, Compiladores Ciclo I-2016 Página 2
“;”, o que la declaración de tipos debe ir antes que la de variables. (int var;)
¿QUÉ ENTENDEMOS POR SEMANTICA?
Semántica en los lenguajes de programación es el conjunto de reglas que especifican el
significado de cualquier sentencia, sintácticamente correcta y escrita en un determinado lenguaje.
Por ejemplo en el lenguaje Pascal la sentencia: suma:= 27/lado Es sintácticamente correcta, ya
que a la izquierda del símbolo de asignación hay un identificador, y a la derecha una expresión.
Pero para que sea semánticamente correcta hay que comprobar:
a) Lado debe ser compatible con el operador “/” y con el operando 27.
b) Suma debe ser un tipo compatible con el resultado de la operación.
El ANALIZADOR LEXICO
Un programa fuente es una serie de símbolos (letras, símbolos, caracteres especiales: +, *, !). Con
estos símbolos se representan las construcciones del lenguaje tales como variables, etiquetas,
palabras reservadas, constantes, etc. Es necesario que el compilador o traductor identifique los
distintos significados de estas construcciones, que los creadores de lenguajes dan en la definición
del lenguaje.
El programa fuente se trata inicialmente con el analizador léxico (en inglés scanner), con el
propósito de agrupar el texto en grupos de caracteres con significado propio llamados tokens o
componentes léxicos, tales como variables, identificadores, palabras reservadas y operadores. Por
razones de eficiencia a cada token se le asocia un atributo (o más de uno) que se representa
internamente por un código numérico o por un tipo enumerado.
Por ejemplo considerar la siguiente sentencia es C/C++:
if sueldo == 1000 sueldo * 0.25;
El analizador léxico la separa en la siguiente secuencia de tokens:
3. Clase # 6 – Conceptos del Análisis Léxico
Por: Ing. Marvin Parada, Compiladores Ciclo I-2016 Página 3
En general, el análisis léxico es un análisis a nivel de caracteres, su misión es reconocer los
componentes léxicos o tokens, enviando al analizador sintáctico (en la siguiente etapa) los
tokens y sus atributos.
CONCEPTOS ANALIZADOR LEXICO
Token
Es el nombre que se le da a cada patrón definido, éste nombre debe usarse en todos los
procesos del análisis en todos los lexemas encontrados.
Patrón
Es una representación lógica de una serie de agrupaciones de caracteres con características
comunes.
Lexema
Es cada una de las combinaciones de caracteres que encajan en la definición de un patrón o
token. Ej. Variable1, x, a, edad, y2, etc.
Atributo
Características propias de cada token, por tanto se les denomina atributos del token.
Gramática
Se define como un ente formal para especificar de una manera finita el conjunto de cadenas de
símbolos que constituyen un lenguaje.
Alfabeto
Conjunto finito de símbolos no vacío que conforman una gramática, se representan por ∑
(sigma).
4. Clase # 6 – Conceptos del Análisis Léxico
Por: Ing. Marvin Parada, Compiladores Ciclo I-2016 Página 4
Símbolo
Entidad abstracta que no se va a definir pues se deja como axioma. Normalmente son letras de
alfabetos, números o caracteres especiales como +, -, *, /, etc. No necesariamente serán uno
solo, ya que un símbolo puede ser una combinación como palabras reservadas de un lenguaje
de programación then, end, beging, else, while, etc.
Expresión Regular
Representan patrones de cadenas de caracteres. Se conocen más como metalenguajes que
sirven para describir los lenguajes regulares.
Diagrama de Transición
Es el conjunto de secuencias de entrada que representan gráficamente los símbolos validos por
la gramática, es una representación de los universales autómatas que aparecen en la
matemática y otras ciencias.
Tabla de Transiciones
Es la manera más cercana de representar los autómatas, consta de filas que representan los
estados y las columnas que representan los símbolos de entrada. Adicionalmente se agregan
dos columnas para representar los tokens y para indicar retrocesos.
Cadena
Se define como una secuencia de símbolos de un lenguaje determinado. Por ejemplo 0001,
abcd, a+4*b, 11000, etc. Una cadena siempre tiene una longitud que esta denotada por la
cantidad de símbolos independientes que la conforman.
|abcde| →5
|000111| →6
Cuando la cadena es vacía se representa como |λ|→0.
Lenguaje
Un lenguaje es un conjunto de palabras que se puede representar con un determinado alfabeto.
Autómata
Es una construcción lógica que recibe como entrada una cadena de símbolos y produce una
salida indicando si la salida es una cadena que pertenece a un determinado lenguaje.