Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
la
Teoría de Lenguajes
Formales
David Hernández Escárcega 17410414
Lenguajes y autómatas 1
Contenido
Introducción.......................................................................................................................................2
1.1 Alfabeto........................................................................................................................................2
1.2 Cadenas........................................................................................................................................2
Longitud de cadena........................................................................................................................2
Cadena Vacía..................................................................................................................................2
Concatenación de cadenas.............................................................................................................2
1.3 Lenguajes.....................................................................................................................................3
1.4 Tipos de lenguajes........................................................................................................................3
Lenguaje maquina..........................................................................................................................3
Lenguaje ensamblador...................................................................................................................3
Lenguajes de alto nivel...................................................................................................................3
Lenguaje declarativo......................................................................................................................4
1.5 Herramientas computacionales ligadas con lenguajes.................................................................4
Traductor........................................................................................................................................4
Compilador.....................................................................................................................................4
Ensambladores...............................................................................................................................4
Interpretes.....................................................................................................................................4
1.6 Estructura de un traductor...........................................................................................................4
Fase de análisis...............................................................................................................................4
Fase de síntesis...............................................................................................................................5
1.7 Fases de un compilador................................................................................................................5
Análisis...........................................................................................................................................5
Análisis léxico.............................................................................................................................5
Análisis sintáctico.......................................................................................................................5
Análisis semántico......................................................................................................................5
Síntesis...........................................................................................................................................5
Generación de código intermedio..............................................................................................5
Generación de código objeto.....................................................................................................6
Optimización..............................................................................................................................6
La tabla de símbolos.......................................................................................................................6
Conclusión..........................................................................................................................................6
Bibliografía.........................................................................................................................................7
Introducción.
En los últimos años se han dado una gran cantidad de avances tecnológicos, cada
vez se hace mas uso de computadoras o dispositivos móviles, cada vez se
interactúa mas con programas o aplicaciones que van desde aplicaciones
profesionales a inclusive aplicaciones de entretenimiento. El mercado para el
software se ha vuelto muy amplio y cada día los usuarios son mas exigentes, esto
implica que haya una mayor cantidad de desarrolladores creando estas
aplicaciones, es por esto que cada vez se requieren de herramientas que hagan
más comprensible y fácil la interacción de un usuario con la máquina. Hace unos
años esto era sumamente difícil ya que el desarrollador requería hacer esa
comunicación manualmente debido a la falta de herramientas que automatizaran
ese trabajo lo cual lo hacia un trabajo tedioso, difícil y largo, sin embargo, a día de
hoy existen una gran cantidad de herramientas que nos ayudan a esto y a parte de
esto contando con mejoras que nos ayudan a que el desarrollo sea mucho más
fácil y rápido.
1.1 Alfabeto
Alfabeto es cualquier conjunto finito y no vacío de elementos que denominan
símbolos y los denotaran con el símbolo Ʃ.
1.2 Cadenas
Es una cadena sobre un alfabeto Σ. Puede existir una única cadena que no tiene
símbolos, la cual se denomina cadena vacía y se denota con λ. la cadena vacía
desempeña un papel similar al que desempeña el conjunto vacío Ø en
la teoría de conjuntos.
Longitud de cadena
La longitud de cadena es el número de símbolos que contiene dicha cadena.
ejemplo: la cadena abcb = 4.
Cadena Vacía.
Una cadena vacía es la única cadena de caracteres de tamaño cero. Y la
podemos denotar usualmente con letras λ o Є.
Concatenación de cadenas.
La concatenación de dos cadenas es unir las dos cadenas para formar una nueva.
El resultado de la concatenación es independiente del orden en que las
operaciones son ejecutadas. Matemáticamente esta propiedad es conocida como
asociatividad.
1.3 Lenguajes
Es un conjunto de cadenas, de todas las seleccionadas de un Σ*. donde Σ
determinado el alfabeto se denomina lenguaje. Si Σ es un alfabeto y L Σ*,
entonces L es un lenguaje de Σ. Un lenguaje de Σ no necesita incluir cadenas con
todos los símbolos de Σ. Pueden interpretarse como conjuntos de cadenas.
Lenguaje ensamblador
Es un derivado del lenguaje maquina y está formado por abreviaturas de letras y
números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon
los programas traductores para poder pasar los programas escritos en lenguaje
ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina
es que los códigos fuentes eran más cortos y los programas creados ocupaban
menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente
las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que
aprender un nuevo lenguaje difícil de probar y mantener.
Lenguaje declarativo
Es un tipo de lenguaje de programación más cercanos al razonamiento humano.
Los lenguajes declarativos no dicen cómo hacer una cosa, sino, más bien, qué
cosa hacer. No suele haber declaración de variables ni tipos.
Fase de análisis
Los dos objetivos de la etapa de análisis son:
Fase de síntesis
La etapa de síntesis construye el programa objeto deseado a partir de las
estructuras generadas por la etapa de análisis.
La tabla de símbolos
A lo largo del proceso de análisis se va generando gran cantidad de información
que se puede considerar ligada a los objetos que se van descubriendo en el
programa: variables, constantes, funciones, etc. El acceso a esta información se
realiza mediante los nombres de estos objetos. Esto hace necesario tener alguna
manera de, a partir de un identificador, encontrar sus propiedades. La estructura
de datos que guarda esta información se denomina tabla de símbolos
Conclusión
El conocer que son los lenguajes formales y como funcionan es de suma
importancia, ya que estos son de gran utilidad para el área de sistemas, ya que un
desarrollador al encontrarse en su entorno de trabajo hará un gran uso de
herramientas que le ayuden a un correcto funcionamiento dentro de su área de
trabajo, una de estas herramientas puede ser un entorno de desarrollo integrado
(IDE) el cual es una herramienta que sirve para la creación de programas y/o
aplicaciones, la cual integra un compilador y un interprete generalmente, esto con
el fin de que un programador al momento de estar desarrollando una aplicación y
quiera saber si existe algún error en cuanto la sintaxis o semántica pueda
detectarlo fácilmente desde una de estas dos herramientas, estas herramientas a
día de hoy están tan desarrolladas que inclusive aparte de decirte que existe un
error te dicen cual es el error y en donde se encuentra, lo que es de gran utilidad
para los desarrolladores ya que hacen más eficiente la creación de más y mejor
software.
Bibliografía
Alfred V. Aho, M. S. (2008). Compiladores principios, técnicas y herramientas. México: Pearson
Education.