Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compilador:
Es un Software que traduce un programa escrito en un lenguaje de programación de alto
nivel (C / C ++, COBOL, etc.) en lenguaje de máquina. Que genera lenguaje ensamblador
primero y luego traduce el lenguaje ensamblador al lenguaje máquina. Una utilidad
conocida como «enlazador» combina todos los módulos de lenguaje de máquina necesarios
en un programa ejecutable que se puede ejecutar en la computadora.
Token:
Un token es una cadena de caracteres que tiene un significado coherente en cierto lenguaje
de programación. Ejemplos de tokens, podrían ser palabras clave (if, while, int,...),
identificadores, números, signos, o un operador de varios caracteres, (por ejemplo, :=).
Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un
programa, surgen en la primera fase, llamada análisis léxico, sin embargo, se siguen
utilizando en las siguientes fases (análisis sintáctico y análisis semántico) antes de perderse
en la fase de síntesis.
Análisis descendente:
Analizador sintáctico descendente. (Top-Down-Parser): un analizador puede empezar con
el símbolo inicial e intentar transformarlo en la entrada, intuitivamente esto sería ir
dividiendo la entrada progresivamente en partes cada vez más pequeñas.
Para trabajar el análisis sintáctico descendente se debe realizar primeramente algunas
operaciones para que la gramática sea LL1 las cuales son:
ELIMINAR AMBIGUEDAD: Para eliminar la ambigüedad se debe reescribir la
gramática.
ELIMINAR RECURSIVIDAD POR LA IZQUIERDA: Una gramática es recursiva
por la izquierda si tiene un nodo Terminal a tal que existe una derivación A->Aα
para alguna cadena. Es decir, por simple observación podemos identificar.
Análisis ascendente:
Analizador sintáctico ascendente. (Bottom-Up-Parser). Un analizador puede empezar con la
entrada e intentar llegar hasta el símbolo inicial, intuitivamente el analizador intenta
encontrar los símbolos más pequeños y progresivamente construir la jerarquía de símbolos
hasta el inicial.
Autómatas finitos:
1.-Analizador léxico:
Lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa
las secuencias de caracteres en unidades con significado propio conocidos como
tokens.
Las palabras clave, identificadores, operadores, constantes numéricas, signos de
puntuación como separadores de sentencias, llaves, paréntesis, etc. Son diversas
clasificaciones de componentes léxicos.
2.-Análisis sintáctico:
Determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje y
obtiene la estructura jerárquica del programa en forma de árbol, donde los nodos
son las construcciones de alto nivel del lenguaje.
Se determinan las relaciones estructurales entre los componentes léxicos, esto es
semejante a realizar el análisis gramatical sobre una frase en lenguaje natural. La
estructura sintáctica la definiremos mediante las gramáticas independientes del
contexto.
3.-Análisis semántico:
Realiza las comprobaciones necesarias sobre el árbol sintáctico para determinar el
correcto significado del programa.
Las tareas básicas para realizar son: La verificación e inferencia de tipos en
asignaciones y expresiones, la declaración del tipo de variables y funciones antes de
su uso, el correcto uso de operadores, el ámbito de las variables y la correcta
llamada a funciones.
6.-Tabla de Símbolos:
Es una estructura tipo diccionario con operaciones de inserción, borrado y
búsqueda, que almacena información sobre los símbolos que van apareciendo a lo
largo del programa como son:
Los identificadores (variables y funciones)
Etiquetas como (arreglos, registros, etc.)
Además, almacena el tipo de dato, método de paso de parámetros, tipo de retorno y
de argumentos de una función, el ámbito de referencia de identificadores y la
dirección de memoria. Interacciona tanto con el analizador léxico, sintáctico y
semántico que introducen información conforme se procesa la entrada.
7.-Gestor de errores:
Detecta e informa de errores que se produzcan durante la fase de análisis. Debe
generar mensajes significativos y reanudar la traducción.
Encuentra errores: – En tiempo de compilación: errores léxicos (ortográficos),
sintácticos (construcciones incorrectas) y semánticos (p.ej. errores de tipo) – En
tiempo de ejecución: direccionamiento de vectores fuera de rango, divisiones por
cero, etc. – De especificación/diseño: compilan correctamente pero no realizan lo
que el programador desea.
3. Explique qué es y realice un ejemplo de cómo funciona un árbol sintáctico
Esto hace a los árboles de sintaxis abstracta diferentes de los árboles de sintaxis concreta,
llamados tradicionalmente árboles de parser, que son a menudo construidos por la parte
parser de la traducción del código fuente y el proceso de compilación (a pesar quizás de un
nombramiento no intuitivo).
Ejemplo:
Bibliografia:
https://www.google.com/search?
q=arbol+de+sintaxis+abstracta+ejemplo&hl=es&source=lnms&tbm=isch&sa=X&ved=2ahU
KEwi1xZuKpLzpAhWlmuAKHST3BJoQ_AUoAXoECAwQAw&biw=1517&bih=640#imgrc=Ax6
P7L20URRhUM
https://www.google.com/search?
q=que+es+un+token+programacion&oq=&aqs=chrome.7.69i59l8.1621867j0j7&sourceid=c
hrome&ie=UTF-8
https://www.ecured.cu/Aut%C3%B3mata_finito
https://www.ecured.cu/Analizador_sint%C3%A1ctico_ascendente
https://sites.google.com/site/teoriadelenguajesformaless/1-7-fases-de-un-compilador
https://www.dlsi.ua.es/asignaturas/pl/downloads/1516/tema3-1x2.pdf