Академический Документы
Профессиональный Документы
Культура Документы
TÍTULO PRELIMINAR
2. JUSTIFICACIÓN
3. OBJETIVOS DE LA INVESTIGACIÓN
Objetivos generales
Alcanzar a comprender lo que es un análisis léxico como preámbulo para el
análisis sintáctico y semántico de un compilador
Ubicar las funciones principales que desarrolla el analizador de léxico en el
trabajo que hace el compilador para pasar de un lenguaje de programación de
alto nivel al lenguaje máquina el cual puede ser leído y luego interpretado por un
computador.
Objetivos específicos
Comprender como inicia la etapa de análisis de un programa por parte del
compilador, el cual, se compone de dos partes: el análisis y la síntesis, ya que
el análisis se compone por el análisis léxico, análisis sintáctico y análisis
semántico.
Nuestro trabajo intenta dar a conocer de una manera fácil lo que es el Análisis
Léxico el cual descompone y lee carácter por carácter la información para así
formar un significado, creando componentes léxicos para que después sea
enviado al análisis sintáctico.
5. PLANTEAMIENTO DE LA HIPÓTESIS
Definición.
Un analizador léxico es un módulo destinado a leer caracteres del archivo de
entrada, donde se encuentra la cadena a analizar, reconocer subcadenas que
correspondan a símbolos del lenguaje y retornar los tokens correspondientes y sus
atributos.
Un analizador léxico y/o analizador lexicográfico (en inglés scanner) es la primera
fase de un compilador consistente en un programa que recibe como entrada el
código fuente de otro programa (secuencia de caracteres) y produce una salida
compuesta de tokens (componentes léxicos) o símbolos. Estos tokens sirven para
una posterior etapa del proceso de traducción, siendo la entrada para el analizador
sintáctico (en inglés parser).
La especificación de un lenguaje de programación a menudo incluye un conjunto de
reglas que definen el léxico. Estas reglas consisten comúnmente en expresiones
regulares que indican el conjunto de posibles secuencias de caracteres que definen
un token o lexema.
En algunos lenguajes de programación es necesario establecer patrones para
caracteres especiales (como el espacio en blanco) que la gramática pueda
reconocer sin que constituya un token en sí.
typedef enum{TKN IF, TKN THEN, TKN NUM, TKN ID, TKN OPADD,...}
TokenType;
Es importante conocer el lexema (para construir la tabla de símbolos). Los
componentes léxicos se representan mediante una estructura registro con tipo de
token y lexema:
typedef struct {
TokenType token;
char *lexema; //se reserva memoria dinámicamente
} TokenRecord;
TokenRecord getToken(void);
a[indice]= 2 + 4
Búfer de entrada
Identificadores
letter = [a-zA-Z]
digit = [0-9]
identifier = letter (letter j digit)*
Palabras Reservadas
tkn if = ‘‘if’’
tkn while = ‘‘while’’
tkn do = ‘‘do’’
Comentarios
{ (˜ })* } comentarios en Pascal
Delimitadores
delimitadores = (newline j blank j tab j comment)+
Algunos autores:
Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores:
Principios, técnicas y herramientas, Tema 3, páginas: 85-158.
9. ÍNDICE PRELIMINAR