Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DIVISIÓN DE INGENIERÍA EN
SISTEMAS COMPUTACIONALES
LENGUAJES Y AUTÓMATAS
PRESENTA:
DOCENTE:
Introducción ............................................................................................................................................. 2
Desarrollo ................................................................................................................................................. 3
Alfabeto .................................................................................................................................................... 3
Cadenas .................................................................................................................................................... 4
Lenguajes.................................................................................................................................................. 5
Traductor .................................................................................................................................................. 6
Fases de un compilador ........................................................................................................................... 8
Conclusión .............................................................................................................................................. 10
Referencias Bibliográficas ...................................................................................................................... 11
i
Introducción
A continuación, la investigación.
Desarrollo
Alfabeto
Definición: “Un alfabeto es un conjunto de símbolos finito y no vacío de
elementos llamados símbolos o letras.”[1]
Se utiliza el símbolo ∑ para nombrar un alfabeto y la pertenecía de un símbolo σ a
un alfabeto se denota como σ € ∑
Ejemplo: Podemos representar el alfabeto de las letras minúsculas que utiliza el
idioma español, el cual contiene los 27 símbolos siguientes:
3
Cadenas
Definición: “Una cadena o palabra es una secuencia finita de símbolos que
pertenecen a un alfabeto y comúnmente se denota con la letra 𝑤. La cadena vacía
se denota como ϵ y es una secuencia vacía de símbolos tomados de cualquier
alfabeto ∑.”[2]
Longitud de una cadena
Una cadena tiene longitud, la cual se mide por el número de símbolos que hay
dentro de esta y se denota por |𝑤|
Ejemplo de una longitud de cadena:
|𝑎𝑏𝑐𝑏| = 4
|𝑎 + 2 ∗ 𝑏| = 5
|000111| = 6
Concatenación de cadenas.
Sea u = ab v = ca w = bb.
Entonces:
uv = abca
uw = cabb
(uv) w = abcabb
u(vw) = abcabb
4
Lenguajes
La elección del término "lenguaje" puede parecer extraña. Sin embargo, los
lenguajes habituales pueden interpretarse como conjuntos de cadenas.
Tipos de lenguajes
Lenguaje artificial
5
Lenguaje regular.
Traductor
Definición 1: “Un traductor se define como un programa que traduce o convierte
desde un texto o programa escrito en un lenguaje fuente hasta un texto o
programa equivalente escrito en un lenguaje destino produciendo, si cabe,
mensajes de error”[5]
Definición 2: ”Un traductor es un programa que tiene como entrada un texto
escrito en un lenguaje (lenguaje fuente) y como salida produce un texto escrito en
un lenguaje (lenguaje objeto) que preserva el significado de origen.”[3]
Ensambladores
Definición: “El término ensamblador (del inglés assembler) se refiere a un tipo
de programa informático que se encarga de traducir un fichero fuente escrito en
un lenguaje ensamblador, a un fichero objeto que contiene código máquina,
ejecutable directamente por la máquina para la que se ha generado. El propósito
para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en código binario, que es el único código
entendible por la computadora, es en la práctica imposible. La evolución de los
lenguajes de programación a partir del lenguaje ensamblador originó también la
evolución de este programa ensamblador hacia lo que se conoce como
programa compilador.”[6]
6
Funcionamiento: El programa lee el fichero escrito en lenguaje ensamblador y
sustituye cada uno de los códigos mnemotécnicos que aparecen por su código de
operación correspondiente en sistema binario.
Preprocesadores
Traduce un lenguaje de alto nivel a otro, cuando el primero no puede pasar a
lenguaje máquina directamente.
Compiladores
Definición: “Un compilador es un programa que lee el código escrito en un
lenguaje (lenguaje origen), y lo traduce o traduce en un programa equivalente
escrito en otro lenguaje (lenguaje objetivo). Como una parte fundamental de este
proceso de traducción, el compilador le hace notar al usuario la presencia de
errores en el código fuente del programa.”[6]
Interpretes
“Traduce a lenguaje máquina, cada línea del programa fuente y la ejecuta de
inmediato. Traducen en Lenguaje de Alto Nivel a Lenguaje Maquina, se encargan
de traducir cada instrucción, una por una (o cada línea de instrucciones) contenida
en un programa escrito en cualquier lenguaje de alto nivel a instrucciones en
código binario, comprensible por las computadoras.”[6]
7
Fases de un compilador
Análisis Léxico
La primera fase de escáner funciona como un texto escáner. Esta fase busca en el
código fuente como una secuencia de caracteres y la convierte en un lexema
resultante-. Analizador Léxico representa estos lexemas resultantes- en forma de
fichas:
<token-name, attribute-value>
Sintaxis Análisis
La siguiente fase se denomina la sintaxis análisis o análisis. Toma el token de
análisis léxico como entrada y genera un árbol analizar (o árbol de sintaxis). En
esta fase, token arreglos se contrastan con el código fuente gramática, es decir, el
analizador comprueba si la expresión de los tokens es sintácticamente correcto.
Análisis semántico
Análisis semántico comprueba si el análisis árbol construido sigue las reglas del
idioma. Por ejemplo, la asignación de valores es entre tipos de datos compatibles,
y añadiendo cadena en un número entero. Además, el analizador semántico
realiza un seguimiento de los identificadores, sus tipos y expresiones; si los
identificadores se declaran antes de su uso, o no, etc. El analizador semántico
produce un árbol de sintaxis anotado como una salida.
Generación de código intermedio
Tras análisis semántico el compilador genera un código intermedio del código
fuente para el equipo de destino. Es un programa para algunos la máquina
abstracta. , Está entre el lenguaje de alto nivel y el lenguaje de máquina. Este
código intermedio debe ser generado de tal manera que hace que sea más fácil
de traducir en la máquina de destino.
Optimización de código
La siguiente fase de optimización de código es el código intermedio. La
optimización puede ser asumida como algo que elimina código innecesario, y
organiza la secuencia de declaraciones con el fin de acelerar la ejecución del
programa sin desperdicio de recursos (CPU, memoria).
8
Generación de código
En esta fase, el generador de código optimizado la representación del código
intermedio y la asigna a la máquina de destino. El generador de código se traduce
el código intermedio en una secuencia de (generalmente) reubicables código
máquina. Secuencia de instrucciones de código máquina realiza la tarea como el
código intermedio.
Tabla de símbolos
Es una estructura de datos mantendrá en todas las fases de un compilador.
Todos los nombres de identificador junto con sus tipos se almacenan aquí. La
tabla de símbolos hace que sea más fácil para que el compilador pueda buscar
con rapidez el registro de código y recuperarla. La tabla de símbolos se utiliza
también para el campo.
9
Conclusión
10
Referencias Bibliográficas
11