Este documento presenta una introducción a la teoría de lenguajes formales. Define conceptos básicos como alfabeto, cadena y lenguaje. Explica los tipos de lenguajes incluyendo lenguajes de bajo, alto y medio nivel. También describe herramientas computacionales relacionadas con lenguajes como editores, impresoras estéticas, verificadores estáticos e intérpretes. Finalmente, resume la estructura básica de un traductor.
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
Conceptos Unidad 1 Lenguajes Autómatas
1 Introducción a la
Teoría de Lenguajes
Formales.
1.1 Alfabeto.
1.2 Cadenas.
1.3 Lenguajes
1.4 Tipos de lenguajes
1.5 Herramientas computacionales ligadas
con lenguajes
1.6 Estructura de un traductor
1.7 Fases de un compilador
En este material podrás encontrar información acerca de los tipos, caracteristicas, ejemplos de arquitecturas de computadoras. Nota: Esta es la actualización de mi material # 3
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
Conceptos Unidad 1 Lenguajes Autómatas
1 Introducción a la
Teoría de Lenguajes
Formales.
1.1 Alfabeto.
1.2 Cadenas.
1.3 Lenguajes
1.4 Tipos de lenguajes
1.5 Herramientas computacionales ligadas
con lenguajes
1.6 Estructura de un traductor
1.7 Fases de un compilador
En este material podrás encontrar información acerca de los tipos, caracteristicas, ejemplos de arquitecturas de computadoras. Nota: Esta es la actualización de mi material # 3
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
Este trabojo de investigacion incluye el contenido de toda la unidad uno de la materia de lenguajes de interfaz. Se maneja informacion clara y sencilla, dando importancia a los puntos mas importantes de esta primera unidad de la materia ya mencionada.
ES UNA PEQUEÑA RECOPILACION SOBRE LOS TEMAS DE LA UNIDAD 5 Y 6 DE TALLER DE BASE DE DATOS -TRANSACCIONES Y SQL PROCEDURAL- TOMAR EN CUENTA QUE NO SE ABORDAN LOS TEMAS POR COMPLETO SINO QUE SOLO SON LOS PUNTOS MAS IMPORTANTES DE DICHOS TEMAS, Y QUE LE PUEDEN SER DE UTILIDAD. CABE MENCIONAR QUE LA INFORMACION FUE TOMADA DE MULTIPLES PAGINAS WEB
Externalizacion e internacionalizacion de costosLuiS YmAY
incluye una recopilacion de informacion consultada de varias paginas de internet y algunos libros, que hablan sobre la externalizacion e internalizacion de los costos. Tiene un enfoque muy general debido al area en la que me encuentro (no economia ni administracion), pero la informacion es util y sencillo lo que facilita que pueda entender a que se refiere cada tema incluso con una sola lectura. se anexa imagenes de apoyo visual y algunos ejemplos. todo se relaciona a la materia de desarrollo sustentable, para la carrera de ISC
este es un pequeña guia para todos aquellos que les gustaria aprender a programar desde cero, aplicaciones para android. se maneja un lenguaje sencillo no muy tecnico para mayor entendimiento y se incluyen imagenes de apoyo, con el fin de no provocar confusiones en cuanto al proceso de creacion de las apps
conversores analogicos digitales y digitales analogicoLuiS YmAY
esta es una exposicion sobre los conversores analogicos digitales y digitales analogicos: se anexa minformacion acerca de sus caracteristicas y funcionalidades ademas de los diferentes tipos que existen hasta hoy en dia.
Today is Pentecost. Who is it that is here in front of you? (Wang Omma.) Jesus Christ and the substantial Holy Spirit, the only Begotten Daughter, Wang Omma, are both here. I am here because of Jesus's hope. Having no recourse but to go to the cross, he promised to return. Christianity began with the apostles, with their resurrection through the Holy Spirit at Pentecost.
Hoy es Pentecostés. ¿Quién es el que está aquí frente a vosotros? (Wang Omma.) Jesucristo y el Espíritu Santo sustancial, la única Hija Unigénita, Wang Omma, están ambos aquí. Estoy aquí por la esperanza de Jesús. No teniendo más remedio que ir a la cruz, prometió regresar. El cristianismo comenzó con los apóstoles, con su resurrección por medio del Espíritu Santo en Pentecostés.
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
El Mtro. JAVIER SOLIS NOYOLA, crea y desarrolla ACERTIJO: «CARRERA OLÍMPICA DE SUMA DE LABERINTOS». Esta actividad de aprendizaje lúdico que implica de cálculo aritmético y motricidad fina, promueve los pensamientos lógico y creativo; ya que contempla procesos mentales de: PERCEPCIÓN, ATENCIÓN, MEMORIA, IMAGINACIÓN, PERSPICACIA, LÓGICA LINGUISTICA, VISO-ESPACIAL, INFERENCIA, ETCÉTERA. Didácticamente, es una actividad de aprendizaje transversal que integra áreas de: Matemáticas, Neurociencias, Arte, Lenguaje y comunicación, etcétera.
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Lenguajes autómatas.
1. INSTITUTO TECNOLOGICO SUPERIOR
DE
FELIPE CARRILLO PUERTO
INVESTIGACIÓN:
U1 INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES.
D O C E N T E:
Ing. Marcos Gaspar Pech Cruz.
PRESENTA
Angulo Estrella Jesús Alberto
Lara Domínguez Efraín
Yama May José Luis
Tun Chulin Johnni Giovanni
Canul Chan Rolando
Estrada Canul Roger Alfredo
Aula: J2
No. De Control 111K0030
No. De Control 111K0043
No. De Control 111K0056
No. De Control 111K0235
No. De Control 111K0231
No. De Control 111K0038
Grupo: B
C A R R E R A:
Ingeniería en sistemas computacionales
M A T E R I A:
Lenguajes Y Automatas
Felipe Carrillo Puerto, Quintana Roo a 28 de Enero de 2014
2. Introducción a la Teoría de Lenguajes Formales
Contenido
1.1 ALFABETO ............................................................................................................................ 3
1.1.
CADENA ......................................................................................................................... 3
1.3 LENGUAJES .......................................................................................................................... 4
1.4 TIPOS DE LENGUAJES.......................................................................................................... 4
1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. ..................................... 6
1.6 ESTRUCTURA DE UN TRADUCTOR. ...................................................................................... 8
1.7 FASES DE UN COMPILADOR. ............................................................................................. 11
ITS Carrillo Puerto
Lenguajes Y Autómatas
2
ISC-6B
3. Introducción a la Teoría de Lenguajes Formales
INTRODUCCIÓN TEORÍA DE LENGUAJES FORMALES.
1.1 ALFABETO
Se llama alfabeto a un conjunto finito, no vacío, cuyos elementos se denominan
“letras” o “símbolos”. Se denomina palabra a toda secuencia finita de letras
formada con los símbolos de un alfabeto. Se definen los alfabetos por la
enumeración de los símbolos que contiene.
Un "símbolo" es una entidad abstracta. Las letras y los dígitos son ejemplos
de símbolos usados con frecuencia.
Se utilizan meta–símbolos (tal como {, }, =, y la coma) para escribir sobre lo
que hablamos.
Desde el contexto siempre será claro, si se trata de un símbolo del alfabeto o si
se trata de un meta–símbolo.
Usamos subíndices para distinguir diferentes alfabetos.
Usamos normalmente las minúsculas como alfabeto S = {a, . . . , z}, en los
ejemplos normalmente letras desde el principio del alfabeto.
Cardinalidad del alfabeto (número de elementos del alfabeto): |S| > 0, |S| < 8
1.1. CADENA
Una cadena (o palabra) es una secuencia finita de símbolos yuxtapuestos. Por
ejemplo a, b y c son símbolos y casa es una cadena.
La longitud de una cadena w que se denota como |w|, es el número de
símbolos que componen la cadena. Por ejemplo casa tiene una longitud 4.
Habitualmente, se emplean las letras minúsculas del principio del alfabeto (o
dígitos) para designar a los símbolos y las letras minúsculas del final del
alfabeto,
normalmente w,
x,
y y
z,
para
designar cadenas.
La cadena vacía, denotada por E es aquella que presenta cero apariciones
de símbolos, es una cadena que puede construirse en cualquier alfabeto.
ITS Carrillo Puerto
Lenguajes Y Autómatas
3
ISC-6B
4. Introducción a la Teoría de Lenguajes Formales
La concatenación de dos cadenas es la cadena que se forma al escribir la
primera seguida de la segunda, sin que haya espacio entre ellas, Por ejemplo
la concatenación de padre y madre es padremadre. La yuxtaposición se utiliza
como el operador de concatenación. Esto es si w y x son cadenas, entonces wx
es la concatenación de estas dos cadenas. La cadena vacía es la identidad
para el operador de concatenación, es decir Ew=wE para cada cadena de w.
1.3 LENGUAJES
Un lenguaje es un conjunto de cadenas, todas ellas seleccionadas de
un subconjunto finito donde el conjunto es un determinado alfabeto. Es una
forma de representar información basada en un conjunto finito de signos o
símbolos.
El conjunto vacío Ø y el conjunto formado por la cadena vacía { E } son
lenguajes.
El conjunto de palíndromos (cadenas que se leen igual de izquierda a
derecha y viceversa) sobre el alfabeto {0,1} es un lenguaje infinito. Algunos
elementos de este lenguaje son E, 0, 1, 00, 01,010, y 1101011.
Por consiguiente vemos que el conjunto de todos los palíndromos sobre
una colección finita de símbolos no es, técnicamente hablando, un lenguaje,
porque sus cadenas no se construyen colectivamente a partir de un alfabeto.
1.4 TIPOS DE LENGUAJES
Lenguajes de bajo nivel
Son lenguajes totalmente dependientes de la máquina, es decir que el
programa que se realiza con este tipo de lenguajes no se puede migrar o
utilizar en otras máquinas.
Al estar prácticamente diseñados a medida del hardware, aprovechan al
máximo las características del mismo.
Dentro de este grupo se encuentran:
El lenguaje maquina: este lenguaje ordena a la máquina las operaciones
fundamentales para su funcionamiento. Consiste en la combinación de 0's y
1's para formar las ordenes entendibles por el hardware de la máquina.
Este lenguaje es mucho más rápido que los lenguajes de alto nivel.
ITS Carrillo Puerto
Lenguajes Y Autómatas
4
ISC-6B
5. Introducción a la Teoría de Lenguajes Formales
La desventaja es que son bastantes difíciles de manejar y usar, además de
tener códigos fuente enormes donde encontrar un fallo es casi imposible.
El lenguaje ensamblador es un derivado del lenguaje máquina 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.
Lenguajes de alto nivel
Son aquellos que se encuentran más cercanos al lenguaje natural que al
lenguaje máquina.
Están dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy
utilizado en todos los lenguajes de programación. Son estructuras que pueden
cambiar de tamaño durante la ejecución del programa. Nos permiten crear
estructuras de datos que se adapten a las necesidades reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo
que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes
migrar de una máquina a otra sin ningún tipo de problema.
Estos lenguajes permiten al programador olvidarse por completo del
funcionamiento interno de la maquina/s para la que están diseñando el
programa. Tan solo necesitan un traductor que entiendan el código fuente
como las características de la máquina.
Suelen usar tipos de datos para la programación y hay lenguajes de propósito
general (cualquier tipo de aplicación) y de propósito específico (como
FORTRAN para trabajos científicos).
Lenguajes de Medio nivel
Estos lenguajes se encuentran en un punto medio entre los dos anteriores.
Dentro de estos lenguajes podría situarse C ya que puede acceder a los
registros del sistema, trabajar con direcciones de memoria, todas ellas
características de lenguajes de bajo nivel y a la vez realizar operaciones de alto
nivel.
Generaciones
La evolución de los lenguajes de programación se puede dividir en 5 etapas o
ITS Carrillo Puerto
Lenguajes Y Autómatas
5
ISC-6B
6. Introducción a la Teoría de Lenguajes Formales
generaciones.
Primera generación: lenguaje máquina.
Segunda generación: se crearon los primeros lenguajes ensambladores.
Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C,
Pascal, Cobol…
Cuarta generación. Son los lenguajes capaces de generar código por si
solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones
sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes
orientados a objetos, haciendo posible la reutilización d partes del código
para otros programas. Ej. Visual, Natural Adobe.
Quinta generación: aquí se encuentran los lenguajes orientados a la
inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej.
LISP
1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES.
Herramientas Desarrolladas En Programación De Sistemas
Editores de estructuras
Un editor de estructuras toma como entrada una secuencia de órdenes para
construir un programa fuente. El editor de estructuras no solo realiza las
fuentes de creación y modificación de textos de un editor de textos ordinarios,
sino que también analiza el texto del programa, imponiendo al programa fuente
una estructura jerárquica apropiada. De esa manera el editor de estructuras
puede realizar tareas adicionales útiles para la preparación de programas.
Ejemplos:
Editores de C, Pascal, Visual Studio (Fox Pro, Basic, etc.).
Para desarrollar un programa en Fortran, el primer paso es obviamente,
escribir el código fuente, utilizando un editor de texto disponible en la
computadora y guardándolo en archivos texto de extensión .f, .f90, .f95, .for o
de extensión que soporte el compilador y el sistema operativo de la
computadora.
En computadoras que funcionan bajo una versión de LINUX, lo usual
que se utiliza, como editor de texto, es emacs.
El Cornell Program Synthesizer (CPS). Es quizá el ejemplo más
conocido y el más referenciado en la literatura. Ha servido de ejemplo para
ITS Carrillo Puerto
Lenguajes Y Autómatas
6
ISC-6B
7. Introducción a la Teoría de Lenguajes Formales
desarrollar otros. Permite programar en un subconjunto del lenguaje PL/I
denominado PL/CS.
Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue
crear un entorno completo de desarrollo de software, y no sólo un entorno de
programación.
Doxygen: Genera documentación de código C/C++ en forma de páginas
web, incluyendo diversos índices, el código fuente coloreado e indexado, e
incluso diagramas de dependencia entre módulos.
Javadoc: Para lenguaje Java. Usa un formato prefijado de comentario
para las descripciones, incluyendo marcas HTML embebidas y palabras clave
introducidas con el símbolo @. Se generan documentos en forma de páginas
web.
AdaBrowse/AdaDoc/Ada2html: Son herramientas similares a las
anteriores para código en lenguaje Ada. Igualmente generan páginas web.
GVim es la versión para Windows del editor de Unix Vim, un editor para
programadores altamente configurable.
JEdit es un editor orientado a la programación.
Komodo Edit es un editor para lenguajes dinámicos (Perl, PHP, Python,
Ruby y TCL) y de páginas web (JavaScript, CSS, HTML y XML). Este programa
es la versión libre de un programa comercial.
Minimum Profit es un editor de texto para programadores.
Notepad++ es un editor de código fuente para programadores basado
en Scintilla para java y c.
Impresoras estéticas
Una impresora estética analiza un programa y lo imprime de forma que la
estructura del programa resulte claramente visible. Por ejemplo los comentarios
pueden aparecer con un tipo de letra especial, y las proposiciones pueden
aparecer con una indentación proporcional a la profundidad de su anidamiento
en la organización jerárquica de las proposiciones. EJEMPLOS: Word, Excel,
Power Point, Photoshop, etc.
Verificadores estáticos
Un verificador estático lee un programa, lo analiza e intenta descubrir errores
potenciales sin ejecutar el programa. La parte del análisis a menudo es similar
a la que se encuentra en los compiladores de optimización así un verificador
ITS Carrillo Puerto
Lenguajes Y Autómatas
7
ISC-6B
8. Introducción a la Teoría de Lenguajes Formales
estático puede detectar si hay partes de un programa que nunca se podrán
ejecutar o si cierta variable se usa antes de ser definida. Puede detectar
errores de lógica, como intentar utilizar una variable real como apuntador,
empleando las técnicas de verificación de tipos.
Ejemplos:
Editores de C y Pascal.
Verificadores estáticos de sintaxis (como lint) permiten detectar muchos
errores antes de la compilación. (Algo parecido a lo que se obtiene con la
opción -fsyntax- only del compilador de GNU gcc).
Intérpretes: Un intérprete realiza las operaciones que implica el programa
fuente. Para una proposición de asignación, por ejemplo, un intérprete
podría construir un árbol y después efectuar las operaciones de los nodos
con forme “recorre” el árbol.
Muchas veces los intérpretes se usan para ejecutar lenguajes de
órdenes, pues cada operador que se ejecuta en un lenguaje de órdenes suele
ser una invocación de una rutina compleja, como un editor o un compilado
Ejemplos:
Los intérpretes (para lenguajes como Lisp o Basic, o para programas
con sus propios lenguajes interpretados como Derive o Mathematica) Shells de
sistemas operativos o de alguna aplicación como un SMBD.
http://es.scribd.com/doc/159086023/Lenguajes-y-Automatas-i#download
1.6 ESTRUCTURA DE UN TRADUCTOR.
Un traductor es un mediador entre dos entidades: emisoras y receptoras,
los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes.
Un traductor convierte un lenguaje de entrada (código fuente) a una de salida
(código objeto).
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. Los traductores engloban tanto a los compiladores (en los que el lenguaje
destino suele ser código máquina) como a los intérpretes (en los que el
lenguaje destino está constituido por las acciones atómicas que puede ejecutar
ITS Carrillo Puerto
Lenguajes Y Autómatas
8
ISC-6B
9. Introducción a la Teoría de Lenguajes Formales
el intérprete). La figura 1.1 muestra el esquema básico que compone a un
compilador/intérprete.
Tipos de traductores.
Compiladores
Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y
como salida tiene un fichero ejecutable, es decir, realiza una traducción de un
código de alto nivel a código máquina (también se entiende por compilador
aquel programa que proporciona un fichero objeto en lugar del ejecutable final).
Intérpretes
Es como un compilador, solo que la salida es una ejecución. El programa de
entrada se reconoce y ejecuta a la vez. No se produce un resultado físico
(código máquina) sino lógico (una ejecución). Su principal ventaja es que
permiten una fácil depuración. Entre los inconvenientes podemos citar, en
primer lugar, la lentitud de ejecución, ya que al ejecutar a la vez que se traduce
no puede aplicarse un alto grado de optimización. Otro inconveniente es que
durante la ejecución, el intérprete debe residir en memoria, por lo que
consumen más recursos.
La figura 1.2 muestra los pasos a seguir en estos lenguajes para obtener una
ejecución.
ITS Carrillo Puerto
Lenguajes Y Autómatas
9
ISC-6B
10. Introducción a la Teoría de Lenguajes Formales
En el proceso de traducción se identifican dos fases principales:
Fase de Análisis
Fase de Síntesis
ITS Carrillo Puerto
Lenguajes Y Autómatas
10
ISC-6B
11. Introducción a la Teoría de Lenguajes Formales
1.7 FASES DE UN COMPILADOR.
Definición de Compilador.
Un compilador es un programa informático que traduce un programa escrito en
un lenguaje de programación a otro lenguaje de programación, es decir
programa que permite traducir el código fuente de un programa en lenguaje de
alto nivel, a otro lenguaje de nivel inferior (lenguaje máquina). Generando un
programa equivalente a capaz de interpretar.
FASES DE UN COMPILADOR.
Análisis Léxico. En esta fase se lee los caracteres del programa fuente y se
agrupan en cadenas que representan los componentes léxicos. A la secuencia
ITS Carrillo Puerto
Lenguajes Y Autómatas
11
ISC-6B
12. Introducción a la Teoría de Lenguajes Formales
de caracteres que representa un componente léxico se le llama lexema (o con
su nombre en inglés token).
Análisis Sintáctico. Los componentes léxicos se agrupan
gramaticales que el compilador utiliza para sintetizar la salida.
en
frases
Análisis Semántico. Intenta detectar instrucciones que tengan la estructura
sintáctica correcta, pero que no tengan significado para la operación implicada.
Generación de código Intermedio. Se puede considerar esta operación
intermedia como un subprograma para una máquina abstracta, a esta
representación debe tener dos propiedades importantes: debe ser fácil de
producir y fácil de traducir al programa objeto.
Optimización de Código. Se trata de mejorar el código intermedio, de modo
que resulte un código de máquina más rápido de ejecutar.
Generación de Código. Esta constituye la fase final de un compilador.
Administrador de la tabla de símbolos. Se encarga de manejar los accesos a la
tabla de símbolos, en cada una de las etapas de compilación de un programa.
Manejador de errores. Es posible encontrar errores. De esta forma podrán
controlarse más eficientemente los errores encontrados en cada una de las
fases de la compilación de un programa.
Cada fase puede encontrar errores y debe tratarlo para continuar con la
Compilación, permitiendo detectar más errores
Las fases de Análisis Sintáctico y Semántico manejan la mayoría de los
errores
En el Análisis Semántico se detectan errores donde la estructura
sintáctica es correcta pero no tiene significado la operación (Por. ej.
sumar dos ID, donde uno es el nombre de una matriz y el otro un
nombre de procedimiento).
Programas Relacionados con un Compilador.
Preprocesadores (producen la entrada para una computadora).
Procesamiento de Macros
Inclusión de archivos
Preprocesadores “racionales” (estructura de control)
Extensiones a lenguajes (bases de datos).
Ensambladores Producen código ensamblador que se pasa a un ensamblador
para su procesamiento (versión mnemotécnica del código de máquina:
nombres de operaciones y nombres de direcciones de memoria).
ITS Carrillo Puerto
Lenguajes Y Autómatas
12
ISC-6B
13. Introducción a la Teoría de Lenguajes Formales
ITS Carrillo Puerto
Lenguajes Y Autómatas
13
ISC-6B