Está en la página 1de 90

LENGUAJES Y

AUTMATAS i
PORTAFOLIO DE EVIDENCIAS

Vianell Guadalupe Almazn Alor.


5C
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

ndice.
INTRODUCCIN..3

UNIDAD 1 INTRODUCCIN A LA TEORA DE LENGUAJES FORMALES

1.1 Alfabeto. .4
1.2 Cadenas...5
1.3 Lenguajes, Tipos Y Herramientas...7
1.4 Estructura De Un Traductor.9
1.5 Fases De Un Compilador..12

UNIDAD 2 EXPRESIONES REGULARES.

2.1. Definicin Formal De Una ER..14


2.2. Operaciones De ER...15
2.3. Aplicaciones En Problemas Reales...16

UNIDAD 3 AUTMATAS FINITOS.

3.1 Conceptos: Definicin Y Clasificacin De Autmata Finito (AF).17


3.2 Conversin De Un Autmata Finito No Determinista (AFND) A Autmata Finito
Determinista (AFD).22
3.3 Representacin De ER Usando AFND..27
3.4 Minimizacin De Estados En Un AF.29
3.5 Aplicaciones (Definicin De Un Caso De Estudio)..30

UNIDAD 4 ANLISIS LXICO.

4.1 Funciones Del Analizador Lxico..31


4.2 Componentes Lxicos, Patrones Y Lexemas.33
4.3 Creacin De Tabla De Tokens...34

1
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.4 Errores Lxicos..35


4.5 Generadores De Analizadores Lxicos.37
4.6 Aplicaciones (Caso De Estudio)...38

UNIDAD 5 ANLISIS SINTCTICO.

5.1 Definicin Y Clasificacin De Gramticas...43


5.2 Gramticas Libres De Contexto (GLC).47
5.3 rboles De Derivacin..48
5.4 Formas Normales De Chomsky.49
5.5 Diagramas De Sintaxis..57
5.6 Eliminacin De La Ambigedad...59
5.7 Tipos De Analizadores Sintcticos....61
5.8 Generacin De Matriz Predictiva (Clculo First Y Follow)..68
5.9 Manejo De Errores.70
5.10 Generadores De Analizadores Sintcticos...72

UNIDAD 6 MQUINAS DE TURING.

6.1 Definicin Formal MT.74


6.2 Construccin Modular De Una MT.79
6.3 Lenguajes Aceptados Por La MT.81

CONCLUSIN.84

BIBLIOGRAFA...85

2
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Introduccin.
La palabra autmata evoca algo que pretende imitar las funciones propias de los seres vivos, especialmente
relacionadas con el movimiento, por ejemplo el tpico robot antropomorfo. En el campo de los Traductores,
Procesadores, Compiladores e Intrpretes, lo fundamental no es la simulacin del movimiento, sino la simulacin
de procesos para tratar informacin.
La informacin se codifica en cadenas de smbolos, y un autmata es un dispositivo que manipula cadenas de
smbolos que se le presentan a su entrada, produciendo otras tiras o cadenas de smbolos a su salida.
El autmata recibe los smbolos de entrada, uno detrs de otro, es decir secuencialmente. El smbolo de salida
que en un instante determinado produce un autmata, no slo depende del ltimo smbolo recibido a la entrada,
sino de toda la secuencia o cadena, que ha recibido hasta ese instante.
Todo lo anterior conduce a definir un concepto fundamental: Estado De Un Autmata Es toda la informacin
necesaria en un momento dado, para poder deducir, dado un smbolo de entrada en ese momento, cul ser el
smbolo de salida.
Es decir, conocer el estado de un autmata, es lo mismo que conocer toda la historia de smbolos de entrada, as
como el estado inicial, estado en que se encontraba el autmata al recibir el primero de los smbolos de entrada.
El autmata tendr un determinado nmero de estados (pudiendo ser infinitos), y se encontrar en uno u otro
segn sea la historia de smbolos que le han llegado.
Se define configuracin de un autmata a su situacin en un instante. Se define movimiento de un autmata como
el trnsito entre dos configuraciones.
Si un autmata se encuentra en un estado determinado, recibe un smbolo tambin determinado, producir un
smbolo de salida y efectuar un cambio o transicin a otro estado (tambin puede quedarse en el mismo estado).
El campo de estudio de los Traductores, Procesadores e Intrpretes son los lenguajes y las gramticas que los
generan. Los elementos del lenguaje son sentencias, palabras, etc... Formadas a partir de un alfabeto o
vocabulario, que no es otra cosa que un conjunto finito de smbolos. Establecidas las reglas gramaticales, una
cadena de smbolos pertenecer al correspondiente lenguaje si tal cadena se ha formado obedeciendo esas reglas.
Entonces un autmata reconocedor de ese lenguaje, funciona de tal forma que cuando reciba a su entrada una
determinada cadena de smbolos indica si dicha cadena pertenece o no al lenguaje. Tambin se mostrar como
existe un tipo de autmata para reconocer cada uno de los tipos de lenguajes generados por las correspondientes
gramticas.

3
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Unidad I
Introduccin a la Teora de Lenguajes
Formales
Las demostraciones es algo que todos los informticos necesitan conocer y comprender. Algunos de ellos aplican
el estricto punto de vista de que una demostracin formal de la correccin de un programa debe realizarse a la
vez que se escribe el propio programa. Sin duda, este punto de vista no es productivo. Por otro lado, estn aquellos
que establecen que las demostraciones no tienen lugar en la disciplina de programacin, en cuyo caso, suele
aplicarse la afirmacin si no est seguro de que el programa sea correcto, ejectelo y comprubelo.
Probar los programas es fundamental. Sin embargo, la realizacin de pruebas slo llega hasta cierto punto, ya que
no es posible probar los programas para todas las posibles entradas. An ms importante, si el programa es
complejo, por ejemplo contiene recursiones o iteraciones, entonces si no se comprende qu es lo que ocurre al
ejecutar un bucle o una llamada a funcin de forma recursiva, es poco probable que podamos escribir el cdigo
correctamente. Si al probar el cdigo resulta ser incorrecto, ser necesario corregirlo.
Para conseguir iteraciones o recursiones correctas, es necesario establecer hiptesis inductivas, y resulta til
razonar, formal o informalmente, que la hiptesis es coherente con la iteracin o recursin. Este proceso sirve
para comprender que el trabajo que realiza un programa correcto es esencialmente el mismo que el proceso de
demostrar teoremas por induccin. Por tanto, adems de proporcionar modelos que resulten tiles para
determinados tipos de software, es habitual en un curso sobre autmatas cubrir las metodologas para la
realizacin de demostraciones formales.

1.1 ALFABETO.
Un alfabeto es un conjunto de smbolos finito y no vaco. Convencionalmente, utilizamos el smbolo para
designar un alfabeto. Entre los alfabetos ms comunes se incluyen los siguientes:
1. = {0,1}, el alfabeto binario.
2. = {a,b, . . . , z}, el conjunto de todas las letras minsculas.
3. El conjunto de todos los caracteres ASCII o el conjunto de todos los caracteres ASCII imprimibles.

4
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

1.2 CADENAS.
Una cadena de caracteres (que tambin se denomina en ocasiones palabra) es una secuencia finita de smbolos
seleccionados de algn alfabeto. Por ejemplo, 01101 es una cadena del alfabeto binario = {0,1}. La cadena 111
es otra cadena de dicho alfabeto.

La Cadena Vaca.
La cadena vaca es aquella cadena que presenta cero apariciones de smbolos. Esta cadena, designada por , es
una cadena que puede construirse en cualquier alfabeto.

Longitud De Una Cadena


Suele ser til clasificar las cadenas por su longitud, es decir, el nmero de posiciones ocupadas por smbolos
dentro de la cadena. Por ejemplo, 01101 tiene una longitud de 5. Es habitual decir que la longitud de una cadena
es igual al nmero de smbolos que contiene; esta proposicin est aceptada coloquialmente, sin embargo, no
es estrictamente correcta. As, en la cadena 01101 slo hay dos smbolos, 0 y 1, aunque tiene cinco posiciones
para los mismos y su longitud es igual a 5. Sin embargo, generalmente podremos utilizar la expresin nmero
de smbolos cuando realmente a lo que se est haciendo referencia es al nmero de posiciones.
La notacin estndar para indicar la longitud de una cadena w es |w|. Por ejemplo, |011| = 3 y | | = 0.

Potencias De Un Alfabeto
Si es un alfabeto, podemos expresar el conjunto de todas las cadenas de una determinada longitud de dicho
alfabeto utilizando una notacin exponencial. Definimos k para que sea el conjunto de las cadenas de longitud
k, tales que cada uno de los smbolos de las mismas pertenece a .
Por ejemplo:
Observe que 0 ={ }, independientemente de cul sea el alfabeto . Es decir, es la nica cadena cuya longitud
es 0.
Si = {0,1}, entonces 1 = {0,1}, 2 = {00,01,10,11}, 3 = {000,001,010,011,100,101,110,111}, etc.
Observe que existe una ligera confusin entre y 1. Lo primero es un alfabeto; sus elementos 0 y 1 son los
smbolos. Lo segundo es un conjunto de cadenas; sus elementos son las cadenas 0 y 1, cuya longitud es igual a 1.
No vamos a utilizar notaciones diferentes para los dos conjuntos, confiando en que el contexto deje claro si {0,1}
o algn otro conjunto similar representa un alfabeto o un conjunto de cadenas.

Por convenio, el conjunto de todas las cadenas de un alfabeto se designa mediante . Por ejemplo,

{0,1} = { , 0, 1, 00, 01, 10, 11, 000, . . .}. Expresado de otra forma, = 0 1 2
En ocasiones, desearemos excluir la cadena vaca del conjunto de cadenas. El conjunto de cadenas no vacas del
alfabeto se designa como +. Por tanto, dos equivalencias apropiadas son:

5
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

+ = 1 2 3

= + { }

Concatenacin De Cadenas
Sean x e y dos cadenas. Entonces, xy denota la concatenacin de x e y, es decir, la cadena formada por una copia
de x seguida de una copia de y. Dicho de manera ms precisa, si x es la cadena compuesta por i smbolos x = a1a2
ai e y es la cadena compuesta por j smbolos y = b1b2 bj, entonces xy es la cadena de longitud i+ j: xy =
a1a2 aib1b2 bj.

Por ejemplo:
Sean x = 01101 e y = 110. Entonces xy = 01101110 e yx = 11001101. Para cualquier cadena w, tenemos las
ecuaciones w = w = w. Es decir, es el elemento neutro de la concatenacin, dado que su concatenacin con
cualquier cadena proporciona dicha cadena como resultado (del mismo modo que 0, el elemento neutro de la
suma, puede sumarse a cualquier nmero x y proporciona x como resultado).

6
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

1.3 LENGUAJES, TIPOS Y HERRAMIENTAS.


Lenguajes.
Un conjunto de cadenas, todas ellas seleccionadas de un , donde es un determinado alfabeto se denomina
lenguaje. Si es un alfabeto y L , entonces L es un lenguaje de . Observe que un lenguaje de no necesita
incluir cadenas con todos los smbolos de , ya que una vez que hemos establecido que L es un lenguaje de ,
tambin sabemos que es un lenguaje de cualquier alfabeto que sea un superconjunto de .
La eleccin del trmino lenguaje puede parecer extraa. Sin embargo, los lenguajes habituales pueden
interpretarse como conjuntos de cadenas. Un ejemplo sera el ingls, donde la coleccin de las palabras correctas
inglesas es un conjunto de cadenas del alfabeto que consta de todas las letras. Otro ejemplo es el lenguaje C, o
cualquier otro lenguaje de programacin, donde los programas correctos son un subconjunto de las posibles
cadenas que pueden formarse a partir del alfabeto del lenguaje. Este alfabeto es un subconjunto de los caracteres
ASCII. El alfabeto en concreto puede diferir ligeramente entre diferentes lenguajes de programacin, aunque
generalmente incluye las letras maysculas y minsculas, los dgitos, los caracteres de puntuacin y los smbolos
matemticos.
La nica restriccin importante sobre lo que puede ser un lenguaje es que todos los alfabetos son finitos. De este
modo, los lenguajes, aunque pueden tener un nmero infinito de cadenas, estn restringidos a que dichas cadenas
estn formadas por los smbolos que definen un alfabeto finito y prefijado.

Tipos.
Lenguaje Declarativo. Son los ms parecidos al castellano o ingles en su potencia expresiva y
funcionalidad y estn ene le nivel ms alto respecto a los otros. Son fundamentalmente lenguaje de
rdenes, denominados por sentencias que expresan Lo que hay que hacer en vez de Como hacerlo
Lenguaje de Alto Nivel. Permite al programador escribir las instrucciones de un programa utilizando
palabras o expresiones sintcticas muy similares al ingls; logran la independencia del tipo de mquina y
se aproximan al lenguaje natural.
Lenguaje de Bajo Nivel. Son aquellos que estn ms cerca del "entendimiento" de la mquina.
Lenguajes ensambladores. Es un lenguaje de programacin que est dedicado a escribir programas de
bajo nivel; djame explicarte un poco sobre los programas de bajo nivel pues bien un programa de bajo
nivel es aquel que ejerce control sumamente directo al hardware, la palabra bajo hace referencia a una
reducida abstraccin entre lo que es el lenguaje y el hardware; los programas de bajo nivel son hechos
para controladores, aplicaciones especializadas en tiempo real, entre otras.
Lenguaje Maquina. es el nico lenguaje que puede ejecutar una computadora. El lenguaje de mquina es
un cdigo que es interpretado directamente por el microprocesador.
El lenguaje est compuesto por un conjunto de instrucciones ejecutadas en secuencia (con eventuales cambios de
flujo causados por el propio programa o eventos externos) que representan acciones que la mquina podr tomar.
Un lenguaje mquina es especfico de cada arquitectura de computadora.

7
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Todo cdigo fuente en ltima instancia debe llevarse a un lenguaje mquina mediante el proceso de compilacin o
interpretacin para que la computadora pueda ejecutarlo.

Herramientas.
Editores de estructuras:
Un editor de estructuras toma como entrada una secuencia de rdenes para construir un programa fuente. El
editor de estructuras no slo realiza las funciones de creacin y modificacin de textos de un editor de textos
ordinario, sino que tambin analiza el texto del programa, imponiendo al programa fuente una estructura
jerrquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales tiles para la
preparacin de programas Concepto encontrado en el libro de Compiladores de Addison Wesley, a mi punto de
vista estos editores de estructura son los que se encarga de llevar el orden de las palabras, valla el acomodo y
comprobar si la entrada est formada correctamente.

Impresoras estticas:
Una impresora esttica analiza un programa y lo imprime de forma que la estructura del programa resulte
claramente visible Concepto encontrado en el libro de Compiladores de Addison Wesley.

Verificadores estticos:
Este verificador lee un programa, lo analiza e intenta descubrir errores potenciales sin correr el programa, algo
muy parecido a la correccin de los editores de texto como Word. Un verificador esttico puede detectar si hay
partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de ser definida nos dice
Addison Wesley.

Intrpretes:
En lugar de producir un programa objeto como resultado de una traduccin, un intrprete realiza las operaciones
que implica el programa fuente. Muchas veces los interpretes se usan para ejecutar lenguajes de rdenes, pues
cada operador que se ejecuta en un lenguaje de ordenes suele ser una invocacin de una rutina compleja, como
un editor o un compilador.

8
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

1.4 ESTRUCTURA DE UN TRADUCTOR


El 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. Ejemplos
de traductores son los ensambladores y los compiladores.

En el proceso de traduccin se identifican dos


fases principales:

Fase de anlisis Fase de Sntesis

Ensambladores.
El programa ensamblador es el programa que realiza la traduccin de un programa escrito en ensamblador a
lenguaje mquina. Esta traduccin es directa e inmediata, ya que las instrucciones en ensamblador no son ms
que nemotcnicos de las instrucciones mquina que ejecuta directamente la CPU.

9
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Tipos de ensambladores.
Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres
simblicos a las distintas instrucciones.
Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos. Hacen
todo lo que puede hacer un ensamblador, y adems proporcionan una serie de directivas para definir e
invocar macroinstrucciones.
Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a
una nueva arquitectura de procesadores de 32 bits, realizan la misma tarea que los anteriores, permitiendo
tambin el uso de macros, permiten utilizar estructuras de programacin ms complejas propias de los
lenguajes de alto nivel.

Compiladores.
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a
otro lenguaje de programacin, es decir programa que permite traducir el cdigo fuente de un programa en
lenguaje de alto nivel, a otro lenguaje de nivel inferior (lenguaje mquina). Generando un programa equivalente
a capaz de interpretar.

Cualquier compilador debe realizar dos tareas principales: anlisis del Estructura de un Compilador:
programa a compilar y sntesis de un programa en lenguaje mquina.
Para el estudio de un compilador, es necesario dividir su trabajo en
fases. Cada fase representa una transformacin al cdigo fuente para
obtener el cdigo objeto. En cada una de las fases se utiliza un
administrador de la tabla de smbolos y un manejador de errores.

Interpretes.
Realizan normalmente dos operaciones:
Traducen el cdigo fuente a un formato interno.
Ejecutan o interpretan el programa traducido al formato
interno.
La primera parte del intrprete se llama a veces "el compilador",
aunque el cdigo interno que genera no es el lenguaje de la mquina,
ni siquiera lenguaje simblico, ni tampoco un lenguaje de alto nivel.

Particularidades de la interpretacin:
Ahorra memoria. No demasiado eficiente, cada vez que se entre
en un bucle se analizaran sus sentencias.
Produce un resultado que no se puede
almacenar, lo cual hace la ejecucin lenta. Facilita el proceso de depuracin.

10
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

No produce resultados transportables.

La interpretacin es til en:


Sistemas interactivos. Programas de prototipo y de enseanza.
Programas de pequea envergadura.

11
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

1.5 FASES DE UN COMPILADOR


Anlisis Lxico. Estructura:

En esta fase se lee los caracteres del programa fuente


y se agrupan en cadenas que representan los
componentes lxicos. A la secuencia de caracteres
que representa un componente lxico se le llama
lexema (o con su nombre en ingls token).

Anlisis Sintctico.
Los componentes lxicos se agrupan en frases
gramaticales que el compilador utiliza para sintetizar
la salida.

Anlisis Semntico.
Intenta detectar instrucciones que tengan la estructura sintctica correcta, pero que no tengan significado para la
operacin implicada.

Generacin de cdigo Intermedio.


Se puede considerar esta operacin intermedia como un subprograma para una mquina abstracta, a esta
representacin debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa
objeto.

Optimizacin de Cdigo.
Se trata de mejorar el cdigo intermedio, de modo que resulte un cdigo de mquina ms rpido de ejecutar.

Generacin de Cdigo.
Esta constituye la fase final de un compilador. Administrador de la tabla de smbolos. Se encarga de manejar los
accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa.

Manejador de errores.
Es posible encontrar errores. De esta forma podrn controlarse ms eficientemente los errores encontrados en
cada una de las fases de la compilacin de un programa.

12
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

UNIDAD 2
Expresiones Regulares
Sirven como lenguaje de entrada de muchos sistemas que procesan cadenas.
Las tres operaciones sobre los lenguajes que representan los operadores de las expresiones regulares son:

1. La unin de dos lenguajes L y M, designada como L M, es el conjunto de cadenas que pertenecen a L, a


M o a ambos. Por ejemplo, si L = {001, 10, 111} y M = { ,001}, entonces L M = , 10, 001, 111}.
2. La concatenacin de los lenguajes L y M es el conjunto de cadenas que se puede formar tomando cualquier
cadena de L y concatenndola con cualquier cadena de M. Recuerde la Seccin 1.5.2, donde definimos la
concatenacin de una pareja de cadenas; el resultado de la concatenacin es una cadena seguida de la otra.
Para designar la concatenacin de lenguajes se emplea el punto o ningn operador en absoluto, aunque el
operador de concatenacin frecuentemente se llama punto. Por ejemplo, si L= {001,10, 111} y M = {
,001}, entonces L.M, o simplemente LM, es {001, 10, 111, 001001, 10001, 111001}. Las tre s primeras
cadenas de LM son las cadenas de L concatenadas con . Puesto que es el elemento identidad para la
concatenacin, las cadenas resultantes son las mismas cadenas de L. Sin embargo, las tres ltimas cadenas
de LM se forman tomando cada una de las cadenas de L y concatenndolas con la segunda cadena de M, que
es 001. Por ejemplo, la concatenacin de la cadena 10 de L con la cadena 001 de M nos proporciona la cadena
10001 para LM.

3. La clausura (o asterisco, o clausura de Kleene)1 de un lenguaje L se designa mediante L y representa el


conjunto de cadenas que se pueden formar tomando cualquier nmero de cadenas de L, posiblemente con
repeticiones (es decir, la misma cadena se puede seleccionar ms de una vez) y concantenando todas ellas.
Por ejemplo, si L = {0,1}, entonces L es igual a todas las cadenas de 0s y 1s. Si L = {0,11}, entonces L
constar de aquellas cadenas de 0s y 1s tales que los 1s aparezcan por parejas, como por ejemplo 011, 11110
y , pero no 01011 ni 101. Ms formalmente, L es la unin infinita i0 Li, donde L0 = {}, L1 = L y Li,
para i > 1 es LL L (la concatenacin de i copias de L).

13
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

2.1. DEFINICIN FORMAL DE UNA ER.


Definen una notacin estructural que permite describir los mismos patrones que se pueden representar
mediante los autmatas finitos. Se emplean en muchos tipos comunes de software, incluyendo
herramientas para la bsqueda de patrones, por ejemplo, en textos o en nombres de archivo.
Decimos que R es una expresin regular si R es:
1. a para cualquier a
2.
3.

4. (R1 R2), donde R1 y R2 son expresiones regulares

5. (R1 R2)
6. (R*1) donde es una expresin regular
Para el punto 1, cualquier elemento que pertenezca al alfabeto es una expresin regular. En este caso, la expresin
regular a representa el lenguaje {a}.
Para el punto 2, la expresin regular formada por la cadena vaca (representada por ) representa el lenguaje {}.
Para el punto 3, la expresin regular representa el lenguaje vaco. Es importante aclarar que la expresin regular
representa el lenguaje que contiene una sola cadena: la cadena vaca; mientras que la expresin regular
representa el lenguaje que no contiene ninguna cadena (incluida la cadena vaca).
Para los puntos 4, 5, y 6, las expresiones regulares representan los lenguajes obtenidos al aplicar las operaciones
regulares de unin, concatenacin y estrella respectivamente.
A primera vista, la definicin anterior parece ser una definicin circular ya que parece que definimos las
expresiones regulares en trminos de s mismas. Sin embargo, las expresiones regulares R1 y R2 son siempre ms
pequeas que R, lo que nos permite evitar la circularidad en la definicin. A una definicin de este tipo se le llama
definicin inductiva. Los parntesis en las expresiones regulares pueden omitirse: la evaluacin entonces se hace
usando la precedencia de los operadores: estrella, concatenacin y unin.

14
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

2.2. OPERACIONES DE ER.


Ofrecen algo ms que os autmatas no:
Una manera declarativa de expresar las cadenas que queremos aceptar.

Tipos:
Unin.
Si a y b son expresiones regulares, a | b es una expresin regular tal que: {a y b} = a | b, es decir que puede
aparecer o no indistintamente.
Smbolo: |

Concatenacin.
Si a y b son expresiones regulares, ab es una expresin regular tal que: {a y b} = {a}{b}
Smbolo:

Cierre u operacin estrella.


Si a es una expresin regular, entones a* es una expresin regular que denota {a}*. Es decir que denota as cadenas:
a
aa
aaa a
Es decir puede no venir por lo cual sera un conjunto vaco o venir repetidamente
Smbolo: *

Cierre positivo.
Si es una expresin regular, entonces a+ es una expresin regular que denota {a}+. Es decir denota las cadenas:
a
aa
aaa a
Smbolo: +

15
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

2.3. APLICACIONES EN PROBLEMAS REALES.


Facilitar las construcciones de un compilador.
Validar la sintaxis de un programa
Algunos generadores lexicogrficos toman como entrada una sucesin de expresiones regulares y produce
un autmata finito que reconozca cualquier expresin ah descritos.
Algunos editores de texto y programas similares permiten la substitucin de una cadena por otra cualquiera
que cumpla con la expresin regular dada.
Correctores ortogrficos para encontrar patrones en el genoma humano.

16
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Unidad 3
Autmatas Finitos

3.1 CONCEPTOS: DEFINICIN Y CLASIFICACIN DE AUTMATA


FINITO (AF).

Autmatas Finitos.
Un reconocedor de un lenguaje es un programa que toma como entrada una cadena x y, responde "si" si x es
una frase del programa, y "no", si no lo es. Se compila una expresin regular en un reconocedor construyendo un
diagrama de transiciones generalizado llamado autmata finito. Un autmata finito puede ser determinista o no
determinista, donde "no determinista" significa que en un estado se puede dar el caso de tener mas de una
transicin para el mismo smbolo de entrada.

*Autmatas finitos no deterministas.


Un autmata finito no determinista (abreviado, AFN) es un modelo formado por:
1. Un conjunto de estados denotados como: estados S.
2. Un conjunto de smbolos de entrada S (el alfabeto smbolos de entrada).
3. Una funcin de transicin mover que transforma pares estado-smbolo en conjuntos de estados.
4. Un estado S0 que se considera el estado de inicio (o inicial).
5. Un conjunto de estados F considerados como estados de aceptacin (o finales)
Un AFN se puede representar mediante un grafo dirigido etiquetado, llamado grafo de transiciones, en el que los
nodos son los estados y las aristas etiquetadas representan las funciones de transicin. Este grafo se parece a un
diagrama de transiciones, pero el mismo carcter puede etiquetar dos o ms transiciones fuera de un estado, y las
aristas pueden etiquetarse con el smbolo especial ? y con smbolos de entrada.
En la siguiente imagen, se muestra el grafo de transiciones de un AFN que reconoce al lenguaje (a|b)*abb. El
conjunto de estados del AFN es {0, 1, 2,3} y el alfabeto de smbolos de entrada es {a, b}. El estado 0 de la figura
1 se considera el estado de inicio, y el estado de aceptacin 3 est indicado mediante un crculo doble. Cuando se
describe un AFN, se utiliza la representacin de grafo de transiciones. En un computador, puede aplicarse la
funcin de transicin de un AFN de varias formas. La implantacin ms sencilla es una tabla de transiciones en
donde hay una fila por cada estado y una columna por cada smbolo de entrada y ?, si es necesario.

17
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

La entrada para la fila i y el smbolo a en la tabla es el conjunto de estados Transiciones para el autmata finito
(o ms probablemente en la prctica, un apuntador al conjunto de estados)
que puede ser alcanzado por una transicin del estado i con la entrada a. Smbolo de entrada
En la siguiente tabla, se muestran las transiciones para el AFN de la imagen Estado
A B
anterior. El lenguaje definido por un AFN es el conjunto de cadenas de
entrada que acepta. 0 {0, 1} {0}
Ejemplo 1. En la siguiente imagen, se ve un AFN que reconoce aa*| bb*. La 1 - {2}
cadena aaa es aceptada recorriendo los estados 0,1, 2, 2 y 2. Las etiquetas de 2 - {3}
estas aristas son ?, a, a y a, cuya concatenacin es aaa. Obsrvese, que los
smbolos ? "desaparecen" en una concatenacin.

*Autmata Finito Determinista. Un AFD tiene un conjunto finito de estados y un conjunto finito de smbolos de
entrada. Un estado se disea para que sea el estado inicial, y cero o ms estados para que sean estados de
aceptacin. Una funcin de transicin determina cmo cambia el estado cada vez que se procesa un smbolo de
entrada.
Consta de:
1. Un conjunto finito de estados, a menudo designado como Q.
2. Un conjunto finito de smbolos de entrada, a menudo designado como .
3. Una funcin de transicin que toma como argumentos un estado y un smbolo de entrada y devuelve un
estado. La funcin de transicin se designa habitualmente como . En nuestra representacin grfica informal
del autmata, se ha representa mediante arcos entre los estados y las etiquetas sobre los arcos. Si q es un

18
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

estado y a es un smbolo de entrada, entonces (q, a) es el estado p tal que existe un arco etiquetado a que
va desde q hasta p.2
4. Un estado inicial, uno de los estados de Q.
5. Un conjunto de estados finales o de aceptacin F. El conjunto F es un subconjunto de Q.
Un autmata finito determinista (abreviado, AFD) es un caso especial de un autmata finito no determinista en el
cual:
Ningn estado tiene una transicin ?, es decir, una transicin con la entrada ?, y
Para cada estado s y cada smbolo de entrada a, hay exactamente una arista etiquetada a que sale de s.
Un autmata finito determinista tiene una transicin desde cada estado con cualquier entrada. Si se est usando
una tabla de transiciones para representar la funcin de transicin de un AFD, entonces cada entrada en la tabla
de transiciones es un solo estado. Como consecuencia es muy fcil determinar si un autmata finito determinista
acepta o no una cadena de entrada, puesto que hay a lo sumo un camino desde el estado de inicio etiquetado con
esa cadena.

A menudo haremos referencia a un autmata finito determinista mediante su acrnimo: AFD. La representacin
ms sucinta de un AFD consiste en un listado de los cinco componentes anteriores. Normalmente, en las
demostraciones, definiremos un AFD utilizando la notacin de quntupla siguiente:
A = (Q, , , q0, F)
Donde A es el nombre del AFD, Q es su conjunto de estados, son los smbolos de entrada, es la funcin de
transicin, q0 es el estado inicial y F es el conjunto de estados finales.

Cmo Procesa Cadenas Un AFD


Lo primero que tenemos que entender sobre un AFD es cmo decide si aceptar o no una secuencia de smbolos
de entrada. El lenguaje del AFD es el conjunto de todas las cadenas que acepta. Supongamos que a1a2 an
es una secuencia de smbolos de entrada. Comenzaremos con el AFD en el estado inicial, q0. Consultamos la
funcin de transicin , por ejemplo (q0, a1) = q1 para hallar el estado al que pasar el AFD A despus de
procesar el primer smbolo de entrada a1. A continuacin procesamos el siguiente smbolo de entrada, a2,
evaluando (q1, a2); supongamos que este estado es q2. Continuamos aplicando el mismo procedimiento para
hallar los estados q3, q4,. . ., qn tal que (qi1, ai) = qi para todo i. Si qn pertenece a F, entonces la entrada
a1a2 an se acepta y, si no lo es se rechaza.

Notaciones Ms Simples Para Los AFD.


Especificar un AFD utilizando una quntupla con una descripcin detallada de la funcin de transicin resulta
bastante tedioso y complicado de leer. Hay disponibles dos notaciones ms cmodas para describir los autmatas:
1. Un diagrama de transiciones, que es un grafo.

19
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

2. Una tabla de transiciones, que es una ordenacin tabular de la funcin , la cual especifica el conjunto de
estados y el alfabeto de entrada.

Diagramas De Transiciones.
Un diagrama de transiciones de un AFD A = (Q, , ,q0,F) es un grafo definido como sigue:
a. Para cada estado de Q, existe un nodo.
b. Para cada estado q de Q y cada smbolo de entrada a de , sea (q,a) = p. Entonces, el diagrama de
transiciones tiene un arco desde el nodo q hasta el nodo p, etiquetado como a. Si existen varios smbolos de
entrada que dan lugar a transiciones desde q hasta p, entonces el diagrama de transiciones puede tener un
nico arco etiquetado con la lista de estos smbolos.
c. Existe una flecha dirigida al estado inicial q0, etiquetada como Inicio. Esta flecha no tiene origen en ningn
nodo.
d. Los nodos correspondientes a los estados de aceptacin (los que pertenecen a F) estn marcados con un doble
crculo. Los estados que no pertenecen a F tienen un crculo simple.

Tablas de transiciones
Una tabla de transiciones es una representacin tabular convencional de una funcin, como por ejemplo , que
toma dos argumentos y devuelve un valor. Las filas de la tabla corresponden a los estados y las columnas a las
entradas. La entrada para la fila correspondiente al estado q y la columna correspondiente a la entrada a es el
estado (q,a).

*Autmata Finito No Determinista. El AFN difiere del AFD en que el primero puede tener cualquier nmero de
transiciones (incluyendo cero) a los estados siguientes desde un estado dado para un determinado smbolo de
entrada.
Al igual que el AFD, un AFN tiene un conjunto finito de estados, un conjunto finito de smbolos de entrada, un
estado inicial y un conjunto de estados de aceptacin. Tambin dispone de una funcin de transicin, que
denominaremos normalmente . La diferencia entre los AFD y los AFN se encuentra en el tipo de funcin . En
los AFN, es una funcin que toma un estado y smbolos de entrada como argumentos (al igual que la funcin
de transicin del AFD), pero devuelve un conjunto de cero, uno o ms estados (en lugar de devolver exactamente
un estado, como lo hacen los AFD). Comenzaremos con un ejemplo de un AFN y luego proporcionaremos su
definicin precisa.
Las nociones formales asociadas con los autmatas finitos no deterministas e indicamos las diferencias entre los
AFD y AFN. Un AFN se representa esencialmente como un AFD:

20
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

A = (Q, , ,q0,F)
Donde:
1. Q es un conjunto finito de estados.
2. es un conjunto finito de smbolos de entrada.
3. q0, un elemento de Q, es el estado inicial.
4. F, un subconjunto de Q, es el conjunto de estados finales (o de aceptacin).
5. , la funcin de transicin, es una funcin que toma como argumentos un estado de Q y un smbolo de
entrada de y devuelve un subconjunto de Q. Observe que la nica diferencia entre un AFN y un AFD se
encuentra en el tipo de valor que devuelve : un conjunto de estados en el caso de un AFN y un nico estado
en el caso de un AFD.

El lenguaje de un AFN.
Un AFN acepta una cadena w si es posible elegir cualquier secuencia de opciones del estado siguiente, a medida
que se leen los caracteres de w, y se pasa del estado inicial a cualquier estado de aceptacin. El hecho de que otras
opciones que empleen los smbolos de entrada de w lleven a un estado de no aceptacin, o no lleven a ningn
estado en absoluto (es decir, la secuencia de estados muertos), no impide que w sea aceptada por el AFN como
un todo. Formalmente, si A = (Q, , ,q0,F) es un AFN, entonces, L(A) = {w |_ (q0,w) F _= /0}

Es decir, L(A) es el conjunto de cadenas w pertenecientes a tal que (q0, w) contiene al menos un estado de
aceptacin.

21
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

3.2 CONVERSIN DE UN AUTMATA FINITO NO DETERMINISTA


(AFND) A AUTMATA FINITO DETERMINISTA (AFD).

Equivalencia De Autmatas Finitos Deterministas Y No Deterministas.


Aunque existen muchos lenguajes para los que un AFN es ms fcil de construir que un AFD, como por ejemplo
el lenguaje de cadenas que terminan en 01 (Ejemplo 2.6), resulta sorprendente el hecho de que todo lenguaje que
puede describirse mediante algn AFN tambin puede ser descrito mediante algn AFD. Adems, el AFD en la
prctica tiene aproximadamente tantos estados como el AFN, aunque a menudo tiene ms transiciones. Sin
embargo, en el caso peor, el AFD puede tener 2n estados mientras que el AFN ms pequeo para el mismo
lenguaje tiene slo n estados.
La demostracin de que losAFD pueden hacer lo que hacen losAFN implica una construccin importante
conocida como construccin de subconjuntos, porque exige construir todos los subconjuntos del conjunto de
estados del AFN. En general, muchas de las demostraciones acerca de autmatas implican contruir un autmata
a partir de otro. Es importante para nosotros ver la construccin de subconjuntos como un ejemplo de cmo se
describe formalmente un autmata en funcin de los estados y transiciones de otro, sin conocer las especificidades
de este ltimo.
La construccin de subconjuntos se inicia a partir de un AFN N = (QN, ,N,q0,FN). Su objetivo es la descripcin
de un AFD D = (QD, , D,{q0},FD) tal que L(D) = L(N). Observe que los alfabetos de entrada de los dos autmatas
son iguales y el estado inicial de D es el conjunto que contiene slo al estado inicial de N.
Los otros componentes de D se construyen como sigue:
QD es el conjunto de los subconjuntos de QN; es decir, QD es el conjunto potencia de QN. Observe que
si QN tiene n estados, entonces QD tendr 2n estados. A menudo, no todos estos estados son accesibles a
partir del estado inicial de QD. Los estados inaccesibles pueden ser eliminados, por lo que el nmero
de estados de D puede ser mucho menor que 2n.

FD es el conjunto de los subconjuntos S de QN tal que S FN _= / 0. Es decir, FD est formado por


todos los conjuntos de los estados de N que incluyen al menos un estado de aceptacin de N.

Para cada conjunto S QN y para cada smbolo de entrada a perteneciente a ,

Es decir, para calcular D(S,a) nos fijamos en todos


los estados p de S, vemos qu estados de N pasan a p
con la entrada a, y calculamos la unin de todos estos
estados.

22
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Conversin De Un AFND A Un AFD.


Se observa que el AFN de la siguiente imagen (vista anteriormente) tiene dos transiciones desde el estado 0
con la entrada a; es decir, puede ir al estado 0 o al 1. Igualmente, el AFN de la imagen Simulacin de un AFD
tiene dos transiciones en ? desde el estado 0. Ahora se introduce un algoritmo para construir a partir de un AFN
un AFD que reconozca el mismo lenguaje. Este algoritmo se le conoce como construccin de subconjuntos, es
til para simular un AFN por medio de un programa de computador.

Simulacin de un AFD:

Algoritmo 1: Simulacin de un AFD


Entrada. Una cadena de entrada x que termina con un carcter
de fin de archivo eof. Un AFD D con un estado de inicio S0 y
un conjunto F de estados de aceptacin. Salida. La respuesta
"s", si D acepta x, "no", en caso contrario. Mtodo. Aplicar el
Operaciones sobre los estados de un AFN
algoritmo de la derecha a la cadena de entrada x. La funcin
mover(s, c) da el estado al cual hay una transicin desde el estado Operacin Descripcin
s en un carcter de entrada c. La funcin "sgtecar" devuelve
el siguiente carcter de la cadena de entrada x. Conjunto de estados del AFN
cerradura-?
alcanzables desde el estado s del
Algoritmo 2: Construccin de subconjuntos. Construccin de un (s)
AFN con transiciones ? solamente
AFD a partir de un AFN. Entrada. Un AFN N. Salida. Un AFD D
que acepta el mismo lenguaje. Mtodo. El algoritmo construye Conjunto de estados del AFN
cerradura-?
una tabla de transiciones tranD para D. Cada estado del AFD es (T)
alcanzables desde algn estado s en
un conjunto de estados del AFN y se construye tranD de modo T con transiciones ? solamente
que D simular en paralelo todos los posibles movimientos que
Conjunto de estados del AFN hacia
N puede realizar con una determinada cadena de entrada. los cuales hay una transicin con el
mover(T, a)
Se utilizan las operaciones de la tabla de Operaciones sobre los smbolo de entrada a desde algn
estado s en T del AFN
estados de un AFN , para localizar los conjuntos de los estados del
AFN (s representa un estado del AFN, y T, un conjunto de estados del AFN).
Antes de detectar el primer smbolo de entrada, N se puede encontrar en cualquiera de los estados del conjunto
cerradura-? (s0 ), donde s0 es el estado de inicio de K. Supngase que exactamente los estados del conjunto T
son alcanzables desde s 0 con una secuencia dada de smbolos de entrada, y sea a el siguiente smbolo de entrada.
Al ver a, N puede trasladarse a cualquiera de los estados del conjunto mover(T, a). Cuando se permiten
transiciones-?, N puede encontrarse en cualquiera de los estados de cerradura-? (T, a), despus de ver la a.

23
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Se construyen estados D; el conjunto de estados de D; y tranD, la tabla de transiciones de D, de la siguiente


forma. Cada estado de D corresponde a un conjunto de estados de AFN en los que podra estar N despus de

leer alguna secuencia de smbolos de entrada, Construccin de subconjuntos:


incluidas todas las posibles transiciones- ?
anteriores o posteriores a la lectura de smbolos.
El estado de inicio de D es cerradura-? (s0 ). Se
aaden los estados y las transiciones a D
utilizando el algoritmo de la Construccin de
subconjuntos. Un estado de D es un estado de
aceptacin si es un conjunto de estados de AFN
que contenga al menos un estado de aceptacin de
N.
El clculo de cerradura-? (T) es un proceso tpico Calculo de cerradura:
de bsqueda en un grafo de nodos alcanzables
desde un conjunto dado de nodos. En este caso,
los estados de T son el conjunto dado de nodos,
y el grafo est compuesto solamente por las
aristas del AFN etiquetadas por ?
Un algoritmo sencillo para calcular cerradura-?
(T) utiliza una estructura de datos tipo pila para
guardar estados en cuyas aristas no se hayan
buscado transiciones etiquetadas con ?

Implementacin De Los Algoritmos Para Convertir Un AFN En Un AFD


Para la implementacin de estos algoritmos se utiliza el AFN N de la siguiente imagen que acepta el lenguaje
(a|b)*abb. Se aplica el Algoritmo 2. Construccin de subconjuntos a N. El estado de inicio del AFD equivalente
es cerradura-?(0), que es A = {0,1,2,4,7}, puesto que estos son alcanzados desde el estado 0 por un camino en
que todas las aristas estn etiquetadas por ?. El alfabeto de smbolos de entrada es {a, b}. Ahora el algoritmo
indica que debe marcarse A y despus calcular cerradura-? (mover(A, a)) Calculando primero mover(A, a), el
conjunto de estados de N que tiene transiciones en a desde miembros de A. Entre los estados 0,1,2,4 y 7
slo 2 y 7 tienen dichas transiciones, a 3 y a 8, de modo que:
cerradura-? (mover({0,1,2,4,7}, a)) = cerradura-? (3,8) = {1,2,3,4,6,7,8}

24
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Este conjunto se denominar B. As, tranD[A, a] = B. En la imagen de la izquierda, se presenta el clculo de la


cerradura-?. Entre los estados de A, slo 4 tienen una transicin en b a 5, de modo que el AFD tiene una
transicin en b desde A a. cerradura-? (A, b) cerradura-? (mover(A, b)) = cerradura-? ({5}) cerradura-? ({5})
= {1,2,4,5,6,7} Por lo que, tranD[A, b] = C. Es decir; C = {1,2,4,5,6,7} Se contina este proceso con los conjuntos
B y C, ahora sin marcar, finalmente se llegar al punto en que todos los conjuntos que son del estado AFD estn
marcados.
Los dos estados siguientes son: cerradura-? ({5,9}) = {1,2,4,5,6,7,9} y cerradura-? ({5,10}) = {1,2,4,5,6,7,10}
Resumiendo los cinco conjuntos de estados construidos son: A = {0,1,2,4,7} B = {1,2,3,4,6,7,8} C = {1,2,4,5,6,7}
D = {1,2,4,5,6,7,9} E = {1,2,4,5,6,7,10}

Transiciones tranD para el AFD resultante

Smbolo de entrada
Estado
A B

A B C
B B D
C B C
D B E

25
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

El estado A es el estado de inicio, y el estado E es el nico estado E B C


de aceptacin. La tabla de transiciones completa tranD se muestra en
el Cuadro 3. Finalmente en la siguiente imagen se muestra el grafo de transiciones para el AFD resultante.

26
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

3.3 REPRESENTACIN DE ER USANDO AFND


ERs, AFDs y AFNDs son mecanismos equivalentes para denotar los lenguajes regulares. En estas tres secciones
demostraremos esto mediante convertir ER AFND AFD ER. Las dos primeras conversiones son muy
relevantes en la prctica, pues permiten construir verificadores o buscadores eficientes a partir de ERs.

Existen algoritmos que relacionan la especificacin de tokens -expresiones regulares-, con el reconocimiento de
estos -autmatas finitos-. Es posible dada una expresin regular obtener el AFD que reconozca las cadenas del
lenguaje denotado por la expresin regular. Tambin es posible obtener el AFND que reconozca el lenguaje
representado por dicha expresin regular.
El algoritmo que permite construir el autmata finito determinstico est fuera del alcance de estas notas (el
alumno no tiene los prerrequisitos para su estudio en este curso). Sin embargo, el algoritmo utilizado para la
construccin del autmata finito no determinstico AFND, es relativamente sencillo de aplicar, ya que se basa en
reglas simples. Existen muchas variantes de este algoritmo denominado Algoritmo de Thompson.
Este algoritmo es dirigido por sintaxis, es decir, usa la estructura sintctica de la expresin regular para guiar el
proceso de construccin del autmata AFND.
Supongamos que N(s)y N(t)son AFNDs para las expresiones regulares sy t, respectivamente.
a) Para la expresin regular s | t(alternancia), construir el siguiente AFND, N(s|t):

27
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

b) Para la expresin regular st(concatenacin), construir el AFND, N(st)

c) Para la expresin regular s*, construir el AFND, N(s*)

28
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

3.4 MINIMIZACIN DE ESTADOS EN UN AF


Dos estados de un autmata finito determinista son estados equivalentes si al unirse en un slo estado, pueden
reconocer el mismo lenguaje regular que si estuviesen separados. Esta unin de estados implica la unin tanto de
sus transiciones de entrada como de salida. Si dos estados n o son equivalentes, se di ce que son estados
distinguibles. Un estado final con un estado no- final nunca sern equivalentes.
Un AFD est minimizado, si todos sus estados son distinguibles y alcanzables. Un algoritmo de minimizacin de
AFD es el siguiente:

1. Eliminar los estados inaccesibles es del autmata.


2. Construir una tabla con todos los pares (p, q) de estados restantes.
3. Marcar en la tabla aquellas entradas donde un estado es final y el otro es nofinal, es decir, aquellos pares
de estados que son claramente distinguibles.
4. Para cada par (p, q) y cada smbolo a del alfabeto, tal que r = (p,a) y s = (q,a): 1. Si (r, s) ya ha sido
marcado, entonces p y q tambin son distinguibles, por lo tanto marcar la entrada (p, q). 2. De lo
contrario, colocar (p, q) en una lista asociada a la entrada (r, s).
5. Agrupar los pares de estados no marcados.

Luego del tercer paso, si la tabla creada queda completamente marcada, entonces el AFD inicial ya era mnimo.
La complejidad computacional del problema de minimizar u n AFD es polinomio. De hecho, existen algoritmos
ms eficientes an que el mostrado en este artculo (aunque menos10 intuitivos). Sin embargo, el problema de
minimizar un autmata finito no determinista es NP- completo y PSPACE- completo.

29
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

3.5 APLICACIONES (DEFINICIN DE UN CASO DE ESTUDIO).


Construccin del vehculo evasor de obstculos
Uno de los primeros trabajos que comenzaron a formalizar la dinmica de robots mviles es (Crowley, 1989) en
el que se utilizan dispositivos ultrasnicos en el vehculo para su posicionamiento y orientacin.
En (Maes, 1990) se muestra un estudio del comportamiento de robots autnomos y se divide en construccin de
mapas, exploracin, transitar y evasin de obstculos.
En (Seng, 1997) se plantea como una de las mayores problemticas de la navegacin robtica la localizacin y se
proponen los pasos claves para el diseo, calibracin y modelado de autmatas. Hay otros autores que refuerzan
la evasin de objetos o desarrollo de trayectorias mediante tcnicas de navegacin como son: navegacin inercial,
compases magnticos y triangulacin. (Borenstein, 1997).
(Betke, 1997) considera que el autmata puede reconocer marcas especificas en el medio por el cual se desplaza
usando reconocimiento de patrones visuales. La localizacin robtica as como la evasin de obstculos del
autmata, ha llegado a ser uno de los problemas fundamentales en los robots mviles, y por ello, en (Fox, 1999)
se presenta una versin de la localizacin Markov, en donde la idea principal es mantener una densidad de
probabilidad sobre el espacio de todas las localizaciones posibles de un robot en su entorno.
El Vehculo Evasor de Obstculos (VEO de aqu en adelante) obtiene informacin del medio por el cual transita
a travs de unos fotodiodos y unas fotorresistencias que actan como sensores, estos sensores arrojan como
resultado niveles de voltaje que varan en proporcin directa con la proximidad al obstculo, los niveles de voltaje
despus de pasar por un comparador de niveles se convierten en niveles digitales, los cuales determinan una
direccin especifica al actuar como entradas en el bus de direcciones de una memoria RAM, la cual se ha cargado
con un programa, que contiene instrucciones precisas para lograr la evasin de obstculos, estas instrucciones que
10 provienen del bus de datos de la memoria RAM, controlan directamente 2 dispositivos transistorizados
conocidos como puentes H, los cuales interactan directamente con los motores de direccin del vehculo,
indicndoles la accin de giro y por tanto ejecutando los diferentes movimientos para los cuales se dise VEO.
Es necesario por tal motivo presentar el programa que se carg en la memoria RAM segn (Catlogo, 2010).

30
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Unidad 4
Anlisis Lxico
4.1 FUNCIONES DEL ANALIZADOR LXICO.

Scanner.
La fase de rastreo (scanner), tiene las funciones de leer el programa fuente como un archivo de caracteres y
dividirlo en tokens. Los tokens son las palabras reservadas de un lenguaje, secuencia de caracteres que representa
una unidad de informacin en el programa fuente. En cada caso un token representa un cierto patrn de caracteres
que el analizador lxico reconoce, o ajusta desde el inicio de los caracteres de entrada. De tal manera es necesario
generar un mecanismo computacional que nos permita identificar el patrn de transicin entre los caracteres de
entrada, generando tokens, que posteriormente sern clasificados. Este mecanismo es posible crearlo a partir de
un tipo especfico de mquina de estados llamado autmata finito.

Funcin.
Es la primera fase de un compilador. Su principal funcin consiste en leer la secuencia de caracteres del programa
fuente, carcter a carcter, y elaborar como salida la secuencia de componentes lxicos que utiliza el analizador
sintctico. El analizador sintctico emite la orden al analizador lxico para que agrupe los caracteres y forme
unidades con significado propio llamados componentes lxicos (tokens). Los componentes lxicos representan:
o Palabras reservadas: if, while, do
o Identificadores: variables, funciones, tipos definidos por el usuario, etiquetas
o Operadores: =, >, =, <=, +, *, o Smbolos especiales: ; ( ), { },
o Constantes numricas. literales que representan valores enteros y flotantes.
o Constantes de carcter: literales que representan cadenas de caracteres.

El analizador lxico opera bajo peticin del analizador sintctico devolviendo un componente lxico conforme el
analizador sintctico lo va necesitando para avanzar en la gramtica. Los componentes lxicos son los smbolos
terminales de la gramtica. Suele implementarse como una subrutina del analizador sintctico. Cuando recibe la
orden obtn el siguiente componente lxico, el analizador lxico lee los caracteres de entrada hasta identificar
el siguiente componente lxico.

31
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Adems el analizador lxico es responsable de:


o Manejo de apertura y cierre de archivo, lectura de caracteres y gestin de posibles errores de apertura.
o Eliminar comentarios, espacios en blanco, tabuladores y saltos de lnea.
o Inclusin de archivos y macros.
o Contabilizar nmero de lneas y columnas para emitir mensajes de error.

Una de las ventajas de separar el anlisis lxico y anlisis sintctico es que facilita la transportabilidad del
traductor si se decide realizar cambios posteriores, por ejemplo cambiar las etiquetas begin-end por llaves de
apertura y cierre { }.

32
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.2 COMPONENTES LXICOS, PATRONES Y LEXEMAS.


En la fase de anlisis, los trminos componentes lxicos (token), patrn y lexema se emplean con significados
especficos. Un analizador lxico, inicialmente lee los lexemas y le asigna un significado propio.
Componente lxico es la secuencia lgica y coherente de caracteres relativo a una categora:
identificador, palabra reservada, literales (cadena/numrica), operador o carcter de puntuacin, adems
de que un componente lxico puede tener uno o varios lexemas.
Patrn es una regla que genera la secuencia de caracteres que puede representar a un determinado
componente lxico (expresin regular).
Lexema es una cadena de caracteres que concuerda con un patrn que describe un componente lxico
(valor de cadena).
Ejemplo de una cadena de cdigo: const pi = 3.1416;

Lexemas Componente lxico Patrn

Const const const

= relacin < o <= o = o <> o > o >=

Pi identificador Letra seguida de letras o nmeros

3.14 nmero Cualquier literal numrica

hola literal Caracteres entre comillas

El analizador lxico recoge informacin sobre los componentes lxicos en sus atributos asociados. Los tokens
influyen en las decisiones del anlisis sintctico, y los atributos, en la traduccin de los tokens. En la prctica
los componentes lxicos suelen tener solo un atributo. Para efectos de diagnstico, puede considerarse tanto el
lexema para un identificador como el nmero de lnea en el que se encontr por primera vez. Esta informacin
puede ser almacenada en la tabla de smbolos para el identificador (estructura de datos).
Para la cadena E=M*C**2 de ejemplo, los componentes lxicos y los valores de atributo asociado son:

Tomando en cuenta que ciertas parejas no necesitan un valor de atributo. Los atributos relacionados con ese
token debern ser conservados y transferidos a alguna estructura de datos para que sean empleados en las
siguientes etapas del anlisis

33
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.3 CREACIN DE TABLA DE TOKENS.


Tabla: conjunto de pares clave-valor, llamados elementos de la tabla. La tabla de smbolos es una componente
necesaria de un compilador. Al declarar un identificador (normalmente una sola vez), ste es insertado en la
tabla. Cada vez que se utilice el identificador se realizar una bsqueda en la tabla para obtener la informacin
asociada (el valor).
Bsqueda: dada la clave de un elemento, encontrar su valor.
Insercin: Dado un par clave-valor, aadir un elemento nuevo a la tabla.
Cambio de valor: Buscar el elemento y cambiar su valor.
Borrado: Eliminar un elemento de la tabla.
Longitud de bsqueda (o tiempo de acceso)
De una clave: Li = nmero de comparaciones con elementos de la tabla para encontrar esa clave. Mxima: LM =
nmero mximo de comparaciones para encontrar cualquier clave. Media (esperada): Lm = nmero medio de
comparaciones para encontrar un valor. Si la frecuencia de todas las claves es la misma:
Lm = (S Li)/N
Si la frecuencia de todas las claves no es la misma:
Lm = S pi. Li
Grado de ocupacin:
s = n/N donde n=nmero de elementos en la tabla y N=capacidad mxima de la tabla.
Funcin de bsqueda: B : KE asocia a cada clave k un elemento B(k).
Valor asociado a una clave k: v(B(k)). Puede ser mltiple, en cuyo caso normalmente se convierte en un puntero.
Si est en la tabla puede almacenarse consecutivamente o en subtablas paralelas. Tablas de smbolos
(identificadores) La clave es el identificador. El valor est formado por:
Atributos del identificador. Puntero a la posicin de memoria asignada. La clave puede sustituirse por un puntero.
Los identificadores pueden estar empaquetados. La longitud del identificador puede especificarse en la tabla o
delante del nombre, o ser implcita.
Tablas consecutivas: Todos los elementos ocupan posiciones de memoria adyacentes. Tablas ligadas: cada
elemento apunta al siguiente. Tablas doblemente ligadas: cada elemento apunta al siguiente y al anterior. Tablas
no ordenadas Insercin: en el primer lugar vaco.

34
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.4 ERRORES LXICOS.


El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa en
componentes lxicos (tokens), que son secuencias de caracteres que tienen un significado. Adems, todos los
espacios en blanco, lneas en blanco, comentarios y dems informacin innecesaria se elimina del programa
fuente. Tambin se comprueba que los smbolos del lenguaje (palabras clave, operadores,...) se han escrito
correctamente.
Como la tarea que realiza el analizador lxico es un caso especial de coincidencia de patrones, se necesitan los
mtodos de especificacin y reconocimiento de patrones, y estos mtodos son principalmente las expresiones
regulares y los autmatas finitos. Sin embargo, un analizador lxico tambin es la parte del traductor que maneja
la entrada del cdigo fuente, y puesto que esta entrada a menudo involucra un importante gasto de tiempo, el
analizador lxico debe funcionar de manera tan eficiente como sea posible.
Son pocos los errores simplemente en el nivel lxico ya que tiene una visin muy restringida de un programa
fuente. El analizador lxico debe devolver el componente lxico de un identificador y dejar a otra fase se ocupe
de los errores.
Suponga que una situacin en la cual el analizador lxico no puede continuar por que ninguno de los patrones
concuerda con un prefijo de la entrada. Tal vez la estrategia de recuperacin ms sencilla sea recuperacin EN
MODO PNICO (este mtodo de recuperacin es donde se borra caracteres sucesivos de la entrada hasta que
el analizador lxico pueda encontrar un componente lxico bien formado).
Los programas no siempre son correctos!!
El compilador tiene que:
1. Reportar clara y exactamente la presencia de errores
2. Recuperarse de cada error lo suficientemente rpido para poder detectar errores subsiguientes:
Tratar de evitar mensajes falsos de error.
Un error que produce un token errneo.
Errores lxicos posibles.
Un token o componente lxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje
de programacin. Ejemplos de tokens, podran ser palabras clave (if, while, int), identificadores, nmeros, signos,
o un operador de varios caracteres. Son los elementos ms bsicos sobre los cuales se desarrolla
toda traduccin de un programa, surgen en la primera fase, llamada anlisis lxico.
Los errores lxicos se detectan cuando el analizador lxico intenta reconocer componentes lxicos y la cadena de
caracteres de la entrada no encaja con ningn patrn. Son situaciones en las que usa un carcter invlido
(@,$,,,...), que no pertenece al vocabulario del lenguaje de programacin, al escribir mal un identificador,
palabra reservada u operador. Errores lxicos tpicos so:
1. Nombre ilegales de identificadores: un nombre contiene caracteres invlidos.
2. Nmeros incorrectos: un nmero contiene caracteres invlidos o no est formado correctamente, por
ejemplo 3,14 en vez de 3.14 o 0.3.14.

35
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

3. Errores de ortografa en palabras reservadas: caracteres omitidos, adicionales o cambiados de sitio, por
ejemplo la palabra hwile en vez de while.
4. Fin de archivo: se detecta un fin de archivo a la mitad de un componente lxico.

36
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.5 GENERADORES DE ANALIZADORES LXICOS.


Funcionamiento De Lex.
lex no es un analizador sino un generador de analizadores. Esto permite incluir de manera cmoda un analizador
a medida en cualquier programa:

Esquema general

Un programa fuente de Lex tiene el siguiente aspecto:

De estas tres secciones, slo la segunda es obligatoria, y cualquiera de ellas puede estar vaca. Esto quiere
decir que el mnimo programa en lex es: %%
La seccin de declaraciones incluye declaraciones de variables, constantes y definiciones regulares, que
constituyen una manera cmoda de utilizar expresiones regulares largas en la seccin de reglas; por ejemplo:
letra [A-Za-z]
La seccin de reglas especficas los patrones a reconocer y las acciones asociadas a stos, de forma similar
a la que utiliza awk: patrn {acciones en C}
La seccin de rutinas permite definir funciones auxiliares en C, incluida la funcin main(). Por defecto, lex
proporciona un main() que simplemente llama a la funcin yylex().
El comportamiento del programa generado (por defecto a.out, si no se le indica otra cosa al compilador de C)
es el siguiente:
o Imprimir en la salida estndar los lexemas que no se adapten a ningn patrn.
o Realizar la accin indicada para los lexemas que se ajustan a un patrn.
Por lo tanto, si compilamos y ejecutamos el programa mnimo en lex, que consta nicamente de una seccin de
reglas vaca (%%), veremos que se limita a copiar literalmente la entrada estndar en la salida estndar.

37
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

4.6 APLICACIONES (CASO DE ESTUDIO).


Ejemplo de analizador lxico sintctico y semntico.- Este ejemplo tendr que aceptar cualquier fecha del ao
2011, esta fecha tendr que ser vlida (que lleve relacin el mes con el da)
Autmata De Los Meces

Autmata Del Ao

Autmata De Los Das

38
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Analizador Lxico

TOKENS LEXEMAS xx TOKENS LEXEMAS xx TOKENS LEXEMAS xx TOKENS LEXEMAS

Mes 1 ENERO Da 2 2 Da 16 16 Da 30 30

Mes 2 FEBRERO Da 3 3 Da 17 17 Da 31 31

Mes 3 MARZO Da 4 4 Da 18 18

Mes 4 ABRIL Da 5 5 Da 19 19

Mes 5 MAYO Da 6 6 Da 20 20

Mes 6 JUNIO Da 7 7 Da 21 21

Mes 7 JULIO Da 8 8 Da 22 22

Mes 8 AGOSTO Da 9 9 Da 23 23

Mes 9 SEPTIEMBRE Da 10 10 Da 24 24

Mes 10 OCTUBRE Da 11 11 Da 25 25

Mes 11 NOVIEMBRE Da 12 12 Da 26 26

Mes 12 DICIEMBRE Da 13 13 Da 27 27

Ao 2011 Da 14 14 Da 28 28

Da 1 1 Da 15 15 Da 29 29

39
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Analizador Sintctico.
G = {Vt, Vn, S, R}
Vt={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2011,ENERO
,FEBRERO,MARZO,ABRIL,MAYO,JUNIO,JULIO,AGOSTO,SEPTIEMBRE,OCTUBRE,NOVIEMB
RE,DICIEMBRE }
Vn={Da, Mes, Ao, M1, M2, M3,D1, D2, D3 }

Reglas Gramaticales
S = Da/Mes/Ao | Ao/Mes/Da
Mes = M1|M2|M3
M1 = ENERO|MARZO|MAYO|JULIO|AGOSTO|OCTUBRE|DICIEMBRE
M2 = ABRIL|JUNIO|SEPTIEMBRE|NOVIEMBRE
M3 = FEBRERO
Da = D1|D2|D3
D1=1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2=1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3= 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Ao = 2011

rbol De Derivacin
Fecha de prueba 16/02/2011

40
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Analizador Semntico.
Producciones
G={Vt, Vn, S, R}
Vt={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2011,ENERO
,FEBRERO,MARZO,ABRIL,MAYO,JUNIO,JULIO,AGOSTO,SEPTIEMBRE,OCTUBRE,NOVIEMB
RE,DICIEMBRE }
Vn={Da, Mes, Ao, M1, M2, M3,D1, D2, D3 }

Reglas Gramaticales
S = Da/Mes/Ao | Ao/Mes/Da
Mes = M1|M2|M3
M1 = ENERO|MARZO|MAYO|JULIO|AGOSTO|OCTUBRE|DICIEMBRE
M2 = ABRIL|JUNIO|SEPTIEMBRE|NOVIEMBRE
M3 = FEBRERO
Da = D1|D2|D3
D1 =2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2 =2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3 =1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Ao = 2011

Reglas Semnticas
S.Val = Da.Val /Mes.Val /Ao.Val | Ao.Val /Mes.Val /Da.Val
Mes.Val = M1.Val |M2.Val |M3.Val
M1.Val = ENERO |MARZO |MAYO |JULIO |AGOSTO |OCTUBRE |DICIEMBRE
M2.Val = ABRIL |JUNIO |SEPTIEMBRE |NOVIEMBRE
M3.Val = FEBRERO
Da.Val = D1.Val |D2.Val |D3.Val
D1.Val =1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2.Val =1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3.Val =1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Ao.Val = 2011

41
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

rbol De Derivacin

42
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Unidad 5
Anlisis Sintctico

5.1 DEFINICIN Y CLASIFICACIN DE GRAMTICAS.


La gramtica es un ente formal para especificar, de una manera finita, el conjunto de cadenas de smbolos que
constituyen un lenguaje.

Definicin Formal De Gramtica.


Una gramtica es una cudrupla:
G = (VT, VN, S, P)

VT = {conjunto finito de smbolos terminales}


VN = {conjunto finito de smbolos no terminales}
donde :
S es el smbolo inicial y pertenece a VN.
P = {conjunto de producciones o de reglas de derivacin}

Todas las cadenas del lenguaje definido por la gramtica estn formados con smbolos del vocabulario terminal
VT. El vocabulario terminal se define por enumeracin de los smbolos terminales.
El vocabulario no terminal VN es el conjunto de smbolos introducidos como elementos auxiliares para la
definicin de la gramtica, y que no figuran en las sentencias del lenguaje. El vocabulario no terminal se define
por enumeracin de los smbolos no terminales.
La interseccin entre el vocabulario terminal y no terminal es el conjunto vaco:

{VN} {VT} = {}
La unin entre el vocabulario terminal y no terminal es el vocabulario:

{VN} {VT} = {V}


En ocasiones es importante distinguir si un determinado vocabulario incluye o no la cadena vaca, indicndose
respectivamente con superndice + o superndice *, tal como se muestra a continuacin:
V+ = V {}
V* = V + {}
El smbolo inicial S es un smbolo no terminal a partir del cual se aplican las reglas de la gramtica para obtener
las distintas cadenas del lenguaje.
Las producciones P son las reglas que se aplican desde el smbolo inicial para obtener las cadenas del lenguaje.
El conjunto de producciones P se define por medio de la enumeracin de las distintas producciones, en forma de

43
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

reglas o por medio de un metalenguaje por ejemplo BNF (Backus Naur Form) o EBNF (Extended Backus Naur
Form).
Ejemplo:
1. Sea la gramtica : G = ( VT, VN, S, P) donde VT = {a, b}, VN = {S}, y el conjunto de producciones es:
S ab
S aSb
2. Sea la gramtica G = (VN, VT, S, P) donde:

Las reglas de produccin P son :


VN = { <nmero> , <dgito> }
<nmero> ::= <dgito> <nmero>
VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
<nmero> ::= <dgito>
S = <nmero>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Vocabulario terminal
Los elementos del vocabulario terminal se representan por:
- Letras minsculas de comienzo del abecedario: a, b, c, . . . , g.
- Operadores tales como: +, - , *, /,. . .
- Caracteres especiales : # , @ , ( , ) , , ; , . . .
- Los dgitos: 0, 1, . . . , 9
- Las palabras reservadas de lenguajes de programacin con letras minsculas y en negrita: if, then, else,. . .

Vocabulario no terminal
Los elementos del vocabulario no terminal se representan por:
- Letras maysculas de comienzo del abecedario: A, B,. . ., G. La nica excepcin suele ser el smbolo inicial
que se representa con S.
- Nombres en minscula, pero encerrados entre parntesis angulares: <expresin>, <operador>,. . .

Vocabulario
Los elementos indiferenciados del vocabulario terminal y no terminal se denotan con:
- Las letras maysculas del final del abecedario: U, V, W, X, Y, Z.

Cadenas terminales
Las cadenas compuestas totalmente por smbolos terminales se representan como:

44
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

- Las letras minsculas del final del abecedario: t, u, v, x, y, z.

Cadenas
Las cadenas que contienen smbolos terminales y no terminales indiferenciados se representan por:
- Letras minsculas griegas: , , , , ,. . .

Jerarqua De Las Gramticas.


Chomsky defini cuatro tipos distintos de gramticas en funcin de la forma de las reglas de derivacin P
(Chomsky, 1959). La clasificacin comienza con un tipo de gramticas que pretende ser universal, aplicando
restricciones a sus reglas de derivacin se van obteniendo los otros tres tipos de gramticas. Esta clasificacin es
jerrquica, es decir cada tipo de gramticas engloba a todos los tipos siguientes.

Gramticas de tipo 0
Tambin llamadas gramticas no restringidas o gramticas con estructura de frase.
Las reglas de derivacin son de la forma:
Siendo (VN VT) + (VN VT)*, es decir la nica restriccin es que no puede haber reglas de la forma
donde es la cadena vaca.

Gramticas de tipo 1.
Tambin llamadas gramticas sensibles al contexto (en ingls context sensitive). En ellas las reglas de produccin
son de la forma: A
Siendo A VN; , (VN VT)* y (VN VT)+.
Estas gramticas se llaman sensibles al contexto, pues se puede reemplazar A por siempre que estn en el
contexto .

Propiedades.
Propiedad de no decrecimiento. Las cadenas que se obtienen en cualquier derivacin de una gramtica de tipo 1
son de longitud no decreciente, es decir: | || |
y que se puede enunciar como la longitud de la parte derecha de la produccin es mayor o igual a la de la parte
izquierda.
La demostracin es inmediata. Si se define una produccin de un lenguaje tipo 1 como: A
Siendo (VNVT)+, es decir nunca puede ser la cadena vacia, lo que implica que | | 1 y como | A | como
mnimo vale 1, queda demostrada la propiedad: | A | | |

45
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Gramticas de tipo 2.
Las gramticas de tipo 2 tambin se denominan gramticas de contexto libre o libres de contexto. Sus reglas de
produccin tan slo admiten tener un smbolo no terminal en su parte izquierda, es decir son de la forma: A
Siendo A VN y (VN VT)+.
Si cada regla se representa como un par ordenado (A, ), el conjunto P es un subconjunto del conjunto producto
cartesiano VN ({VN VT})+, es decir: P {N ({VN} {VT})+}
La denominacin contexto libre se debe a que se puede cambiar A por, independientemente del contexto en que
aparezca A.

Gramticas de tipo 3.
Tambin denominadas regulares o gramticas lineales a la derecha comienzan sus reglas de produccin por un
smbolo terminal, que puede ser seguido o no por un smbolo no terminal, es decir son de la forma:
A aB
Aa
Donde A, B VN y VT.

Relacin de inclusin
Los cuatro tipos de gramticas estudiados anteriormente (tipo 0, tipo 1, tipo 2, y tipo 3), cada una de ellas tiene
restricciones ms fuertes que las anteriores. Las gramticas de tipo 0, contienen a todas las dems. Las de tipo 1
contienen a las de tipo 2 y tipo 3. Y por ltimo las de tipo 2 contienen a las de tipo 3. Es decir una gramtica de
tipo 3 es de tipo 2, tipo 1 y tipo 0. Por lo tanto se define una jerarqua de gramticas respecto de la relacin de
inclusin, que se puede representar grficamente mediante el diagrama de la siguiente imagen.

46
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.2 GRAMTICAS LIBRES DE CONTEXTO (GLC).


Son las que generan los lenguajes libres o independientes del contexto. Los lenguajes libres del contexto son
aquellos que pueden ser reconocidos por un autmata de pila determinstico o no determinstico.
Como toda gramtica se definen mediante una cuadrupla G = (N, T, P, S), siendo
- N es un conjunto finito de smbolos no terminales

- T es un conjunto finito de smbolos terminales N T =


- P es un conjunto finito de producciones

- S es el smbolo distinguido o axioma S (N T)

En una gramtica libre del contexto, cada produccin de P tiene la forma


Es decir, que en el lado izquierdo de una produccin pueden aparecer el smbolo distinguido o un smbolo no
terminal y en el lado derecho de una produccin cualquier cadena de smbolos terminales y/o no terminales de
longitud mayor o igual que 1. La gramtica puede contener tambin la produccin S si el lenguaje que se
quiere generar contiene la cadena vaca.

BNF
Las gramticas libres del contexto se escriben, frecuentemente, utilizando una notacin conocida como BNF
(Backus-Naur Form). BNF es la tcnica ms comn para definir la sintaxis de los lenguajes de programacin.
En esta notacin se deben seguir las siguientes convenciones:
- Los no terminales se escriben entre parntesis angulares < >
- Los terminales se representan con cadenas de caracteres sin parntesis angulares.
- el lado izquierdo de cada regla debe tener nicamente un no terminal (ya que es una gramtica libre del
contexto)
- El smbolo ::=, que se lee se define como o se reescribe como, se utiliza en lugar de
- Earias producciones del tipo:
<A> ::= <B1>
<A> ::= <B2>
.
.
.
<A> ::= <Bn>

47
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Se pueden escribir como <A> ::= <B1> | <B2> | ... | <Bn>

48
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.3 RBOLES DE DERIVACIN.


Un rbol de derivacin permite mostrar grficamente cmo se puede derivar cualquier cadena de un lenguaje a
partir del smbolo distinguido de una gramtica que genera ese lenguaje.
Un rbol es un conjunto de puntos, llamados nodos, unidos por lneas, llamadas arcos. Un arco conecta dos nodos
distintos. Para ser un rbol un conjunto de nodos y arcos debe satisfacer ciertas propiedades:
- Hay un nico nodo distinguido, llamado raz (se dibuja en la parte superior) que no tiene arcos incidentes.
- Todo nodo c excepto el nodo raz est conectado con un arco a otro nodo k, llamado el padre de c (c es el
hijo de k). El padre de un nodo, se dibuja por encima del nodo.
- Todos los nodos estn conectados al nodo raz mediante un nico camino.
- Los nodos que no tienen hijos se denominan hojas, el resto de los nodos se denominan nodos interiores.
El rbol de derivacin tiene las siguientes propiedades:
- El nodo raz est rotulado con el smbolo distinguido de la gramtica;
- Cada hoja corresponde a un smbolo terminal o un smbolo no terminal;
- Cada nodo interior corresponde a un smbolo no terminal.

Para cada cadena del lenguaje generado por una gramtica es posible construir (al menos) un rbol de derivacin,
en el cual cada hoja tiene como rtulo uno de los smbolos de la cadena.

Gramticas Ambiguas.
Una gramtica es ambigua si permite construir dos o ms rboles de derivacin distintos para la misma cadena.
Por lo tanto, para demostrar que una gramtica es ambigua lo nico que se necesita es encontrar una cadena que
tenga ms de un rbol de derivacin.
Una gramtica en la cual, para toda cadena generada w, todas las derivaciones de w tienen el mismo rbol de
derivacin es no ambigua.
En algunos casos, dada una gramtica ambigua, se puede encontrar otra gramtica que produzca el mismo
lenguaje pero que no sea ambigua.
Si todas las gramticas independientes del contexto para un lenguaje son ambiguas, se dice que el lenguaje es un
lenguaje independiente del contexto inherentemente ambiguo.

49
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.4 FORMAS NORMALES DE CHOMSKY.

Formas Normales Para Las Gramticas Independientes Del Contexto.


Todo LIC (sin ) es generado por una GIC en la que todas las producciones son de la forma A BC o A a,
donde A, B y C son variables y a es un smbolo terminal.
Esta forma se conoce como forma normal de Chomsky. Para llegar a ella, tenemos que hacer una serie de
simplificaciones preliminares, que por s mismas resultan tiles en diversos contextos:
i. Tenemos que eliminar los smbolos intiles, aquellas variables o smbolos terminales que no aparecen en
ninguna derivacin de una cadena terminal que parta del smbolo inicial.

ii. Tenemos que eliminar las producciones-, aquellas de la forma A para alguna variable A.

iii. Tenemos que eliminar las Produccin unitaria, aquellas de la forma A B para A y B.

i. Eliminacin de smbolos intiles.


Decimos que un smbolo X es til para una gramtica G = (V,T,P,S) si existe alguna derivacin de la forma

, donde w pertenece a T. Observe que X puede ser V o T, y la forma sentencial X puede ser la
primera o la ltima en la derivacin. Si X no es til, decimos que es intil. Evidentemente, la omisin de los
smbolos intiles de una gramtica no cambiar el lenguaje generado, por lo que podemos tambin detectar y
eliminar todos los smbolos intiles.
El mtodo para eliminar los smbolos intiles identifica en primer lugar las dos cosas que un smbolo tiene que
cumplir para resultar til:

1. Decimos que X es generador si para alguna cadena terminal w. Observe que todo smbolo terminal es
generador, ya que w puede ser ese mismo smbolo terminal, el cual se obtiene en cero pasos.

2. Decimos que X es alcanzable si existe una derivacin S X para algn y .


Sin duda, un smbolo que es til ser generador y alcanzable. Si eliminamos los smbolos que no son generadores
en primer lugar y luego eliminamos de la gramtica resultante aquellos smbolos que no son alcanzables,
tendremos slo los smbolos tiles.

Clculo de smbolos generadores y alcanzables


Nos quedan dos cuestiones por tratar: cmo calcular el conjunto de smbolos generadores de una gramtica y
cmo calcular el conjunto de smbolos alcanzables de una gramtica. Para ambos problemas, vamos a emplear el
algoritmo que intenta descubrir los smbolos de dichos tipos. Demostraremos que si las construcciones inductivas
apropiadas de estos conjuntos no consiguen descubrir un smbolo que sea generador o alcanzable,
respectivamente, entonces el smbolo no es de ninguno de esos tipos.

50
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Sea G = (V,T,P,S) una gramtica. Para calcular los smbolos generadores de G, realizamos la siguiente induccin.
BASE. Todo smbolo de T, obviamente, es generador, ya que se genera a s mismo.

PASO INDUCTIVO. Supongamos que existe una produccin A y que todo smbolo de es generador.
Entonces A es generador. Observe que esta regla incluye el caso en que = ; todas las variables que tienen
como cuerpo de una produccin son, por supuesto, generadoras.

Teorema U5.1
DEMOSTRACIN. La demostracin en un sentido, que cada smbolo aadido realmente es un smbolo
generador es una sencilla demostracin por induccin sobre el orden en que se aaden los smbolos al conjunto
de smbolos generadores. Dejamos al lector esta parte de la demostracin.
Para realizar la demostracin del teorema en el otro sentido, suponemos que X es un smbolo generador, por

ejemplo, . Demostramos por induccin sobre la longitud de esta derivacin que X es generador.
BASE. Cero pasos. En este caso, X es un smbolo terminal y X se encuentra en la base.
PASO INDUCTIVO. Si la derivacin precisa n pasos para n > 0, entonces X es una variable. Sea la derivacin

, es decir, la primera produccin utilizada es X . Cada smbolo de deriva de alguna cadena


terminal que es parte de w, y dicha derivacin precisar menos de n pasos. De acuerdo con la hiptesis inductiva,
todo smbolo de es generador. La parte inductiva del algoritmo nos permite emplear la produccin X para
inferir que X es generador.
Consideremos ahora el algoritmo inductivo mediante el que determinaremos el conjunto de smbolos alcanzables
para la gramtica G = (V, T ,P ,S). De nuevo, podemos demostrar que cualquier smbolo que no aadamos al
conjunto de smbolos alcanzables no es realmente alcanzable.
BASE. S es alcanzable.
PASO INDUCTIVO. Suponemos que hemos descubierto que cierta variable A es alcanzable. Entonces para todas
las producciones cuya cabeza es A, todos los smbolos de los cuerpos de dichas producciones tambin son
alcanzables.

ii. Eliminacin De Producciones-


Ahora vamos a demostrar que las producciones-, aunque sean convenientes en muchos problemas de diseo de
gramticas, no son esenciales. Por supuesto, sin una produccin que tenga un cuerpo , es imposible generar la
cadena vaca como miembro del lenguaje. Por tanto, lo que realmente vamos a demostrar es que si el lenguaje L
tiene una GIC, entonces L {} tiene una GIC sin producciones-. Si no pertenece a L, entonces el propio L es
L {}, por lo que L tiene una GIC sin producciones-

51
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

La estrategia que vamos a seguir es comenzar por descubrir qu variables son anulables. Una variable A es
anulable s . Si A es anulable, entonces cuando A aparece en el cuerpo de una produccin, decimos que B
CAD, A puede (o no) generar . Construimos dos versiones de la produccin, una sin A en el cuerpo (B CD),
que corresponde al caso en que A tendra que haberse empleado para generar , y el otro en el que A ya est
presente en (B CAD). Sin embargo, si utilizamos la versin en la que aparece A, entonces no podemos permitir
que A genere . Esto no es un problema, ya que simplemente eliminaremos todas las producciones cuyo cuerpo
sea , evitando as que alguna variable genere .
Sea G = (V, T, P, S) una GIC. Podemos encontrar todos los smbolos anulables de G mediante el siguiente
algoritmo iterativo. Demostraremos entonces que no existen ms smbolos anulables que los que el algoritmo
encuentra.

BASE. Si A es una produccin de G, entonces A es anulable.

PASO INDUCTIVO. Si existe una produccin BC1C2 Ck, donde cada Ci es anulable, entonces B es anulable.
Observe que cada Ci tiene que ser una variable anulable, por lo que slo hay que considerar las producciones
cuyos cuerpos sean slo variables.

Teorema U5.2
En cualquier gramtica G, los nicos smbolos anulables son las variables encontradas por el algoritmo anterior.
DEMOSTRACIN. Para la parte si de la proposicin A es anulable si y slo si el algoritmo identifica A como
anulable, simplemente observamos que, por induccin sobre el orden en que se descubren los smbolos anulables,
cada uno de estos smbolos genera . Para la parte slo-si, podemos llevar a cabo una induccin sobre la longitud
de la derivacin ms corta .

BASE. Un paso. En este caso, A tiene que ser una produccin y A se descubre en el caso base del algoritmo.

PASO INDUCTIVO. Supongamos que en n pasos, donde n > 1. El primer paso ser similar a A

C1C2 , donde cada Ci genera mediante una secuencia de menos de n pasos. De acuerdo con la
hiptesis inductiva, el algoritmo descubre que toda Ci es anulable. Por tanto, mediante el paso inductivo, se
determina que A es anulable gracias a la produccin A C1C2 Ck.
Ahora proporcionamos la construccin de una gramtica sin producciones-. Sea G = (V, T, P, S) una GIC.
Determinamos todos los smbolos anulables de G. Construimos una nueva gramtica G1 = (V, T, P1, S), cuyo
conjunto de producciones P1 se determina como sigue.

Para cada produccin A X1X2 Xk de P, donde k 1, suponemos que m de los k Xi son smbolos anulables.
La nueva gramtica G1 tendr 2m versiones de esta produccin, donde los Xi anulables, en todas las posibles
combinaciones estn presentes o ausentes. Existe una excepcin: si m = k, es decir, todos los smbolos son

52
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

anulables, entonces no incluimos el caso en que todos los Xi estn ausentes. Observe tambin que si una
produccin de la forma A existe en P, no incluimos esta produccin en P1.

Teorema U5.3
Si la gramticaG1 se construye a partir de G mediante la construccin anterior para eliminar las producciones-,
entonces L (G1) = L (G) { }.

DEMOSTRACIN. Tenemos que demostrar que si w , entonces w pertenece a L(G1) si y slo si w pertenece
L(G). Como suele suceder, es ms fcil demostrar una proposicin ms general. En este caso, tenemos que
ocuparnos de las cadenas terminales que genera cada variable, aunque slo nos interesa saber qu genera el
smbolo inicial S. Luego tenemos que demostrar que:

En cada caso, la demostracin se hace por induccin sobre la longitud de la derivacin.

Parte Slo-si: Supongamos que . Entonces w , porque G1 no tiene producciones-. Tenemos que

demostrar por induccin sobre la longitud de la derivacin que .

BASE. Un paso. En este caso, existe una produccin A w en G1. La construccin de G1 nos dice que existe
alguna produccin A de G, tal que es w, con cero o ms variables anulables adicionales intercaladas. Luego

en , donde los pasos que siguen al primero, si existen, generan a partir de las variables que
aparecen en .
PASO INDUCTIVO. Supongamos que la derivacin emplea n > 1 pasos. Entonces la derivacin ser similar a

. La primera produccin utilizada debe proceder de una produccin A Y1Y2 Ym,


donde las Y son las X, por orden, con cero o ms variables anulables adicionales intercaladas. Tambin podemos

descomponer w en w1w2 wk, donde para i=1, 2,. . ., k. Si Xi es un smbolo terminal, entonces wi=Xi,

y si Xi es una variable, entonces la derivacin emplea menos de n pasos. Por la hiptesis inductiva,

podemos concluir que . Ahora construimos la derivacin correspondiente en G como sigue:

53
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

El primer paso consiste en aplicar la produccin A Y1Y2 Yk que sabemos que existe en G. El siguiente grupo
de pasos representa la derivacin de a partir de cada una de las Yj que no es una de las Xi. El grupo final de pasos
representa las derivaciones de las wi a partir de las Xi, que sabemos que existen por la hiptesis inductiva.

Parte Si: Supongamos que . Demostramos por induccin sobre la longitud n de la derivacin,

que .

BASE. Un paso. En este caso, A w es una produccin de G. Puesto que w , esta produccin tambin es una

produccin de
PASO INDUCTIVO. Supongamos que la derivacin emplea n > 1 pasos. Entonces la derivacin es similar a

. Podemos descomponer w = w1w2 wm, tal que para i = 1,2,. . . ,m. Sean X1, X2,
. . . ,Xk aquellas Yj, en orden, tales que wj . Luego k 1, ya que w . Por tanto, AX1X2 Xk es una
produccin de G1.

Podemos afirmar que , ya que las nicas Yj que no estn presentes entre las X se han utilizado

para derivar , y por tanto no contribuyen a la derivacin de w. Dado que cada una de las derivaciones

emplea menos de n pasos, podemos aplicar la hiptesis inductiva y concluir que, si wj , entonces .

Por tanto, .

Ahora completamos la demostracin como sigue. Sabemos que w pertenece a L (G1) si y slo si . Sea

A = S, sabemos que w pertenece a L (G1) si y slo s . Es decir, w pertenece a L (G1) si y slo si


w pertenece a L (G) y w .

iii. Eliminacin de las producciones unitarias


Una produccin unitaria es una produccin de la forma A B, donde A y B son variables. Estas producciones
pueden resultar tiles. Por ejemplo, en el Ejemplo 5.27, hemos visto cmo utilizar las producciones unitarias E
T y T F para crear una gramtica no ambigua para las expresiones aritmticas:

54
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Sin embargo, las producciones unitarias pueden complicar determinadas demostraciones e introducir tambin
pasos adicionales en las derivaciones que tcnicamente no tienen por qu incluir. Por ejemplo, podemos expandir
la T de la produccin E T de dos formas posibles, reemplazndola por las dos producciones E F | T F.
Este cambio no elimina las producciones unitarias, porque hemos introducido la produccin unitaria E F que
no formaba parte anteriormente de la gramtica. Adems, la expansin de E F mediante las dos producciones
de F nos proporciona E I | (E) | T F. Todava nos queda una produccin unitaria, que es E I. Pero si
expandimos an ms esta I en las seis formas posibles, obtenemos:

E a | b | Ia | Ib | I0 | I1 | (E) | T F | E +T

Ahora ha desaparecido la produccin unitaria de E. Observe que E a no es una produccin unitaria, ya que el
nico smbolo del cuerpo es un smbolo terminal, en lugar de la variable que se requiere en las producciones
unitarias.
La tcnica anterior (expansin de las producciones unitarias hasta que desaparezcan) suele funcionar. Sin
embargo, puede fallar si existe un ciclo de producciones unitarias, como A B, B C y C A. La tcnica que
est garantizada para funcionar implica determinar en primer lugar todos aquellos pares de variables A y B tales
que , utilizando slo una secuencia de producciones unitarias. Observe que es posible que sea
verdadero incluso aunque no haya implicada ninguna produccin unitaria. Por ejemplo, podramos tener las
producciones A BC y C .
Una vez que hayamos determinado dichos pares, podemos reemplazar cualquier secuencia de pasos de derivacin
en la que AB1B2 Bn por una produccin que utilice directamente la produccin no unitaria Bn
a partir de A; es decir, A . Comenzamos viendo la construccin inductiva de los pares (A, B) tales que

empleando slo producciones unitarias. Denominamos a este tipo de pares par unitario.

BASE. (A, A) es un par unitario para cualquier variable A. Es decir, en cero pasos.

PASO INDUCTIVO. Suponga que hemos determinado que (A, B) es un par unitario y que B C es una
produccin, donde C es una variable. Luego (A, C) es un par unitario.

Teorema U5.4
El algoritmo anterior determina exactamente los pares unitarios para una GIC G.
DEMOSTRACIN. Uno de los sentidos de la demostracin se realiza por induccin sobre el orden en que se

descubren los pares: si se determina que (A, B) es un par unitario, entonces utilizando slo producciones
unitarias. Dejamos al lector esta parte de la demostracin.

55
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Para el otro sentido, suponemos que usando slo producciones unitarias. Podemos demostrar por
induccin sobre la longitud de la derivacin que se encontrar el par (A, B).
BASE. Cero pasos. En este caso, A = B y el par (A, B) se aade a la base del algoritmo.
PASO INDUCTIVO. Supongamos que empleando n pasos para n > 0, siendo cada paso la aplicacin de
una produccin unitaria. Entonces la derivacin ser similar a:

La derivacin emplea n1 pasos, por lo que segn la hiptesis inductiva, descubrimos el par (A, C).

Entonces la parte inductiva del algoritmo combina el par (A, C) con la produccin C B para inferir el par (A,
B).
Para eliminar las producciones unitarias, hacemos lo siguiente. Dada una GIC G = (V, T, P, S), construimos la
GIC G1 = (V, T, P1, S):
1. Determinamos todos los pares unitarios de G.

2. Para cada par unitario (A, B), aadimos a P1 todas las producciones A , donde B es una produccin
no unitaria de P. Observe que A = B es posible; de esa forma, P1 contiene todas las producciones no unitarias
de P.

Teorema U5.5
Si la gramtica G1 se construye a partir de la gramtica G mediante el algoritmo descrito anteriormente para
eliminar las producciones unitarias, entonces L (G1) = L (G).
DEMOSTRACIN. Demostramos que w pertenece a L (G) si y slo si w pertenece a L (G1).

Parte S. Supongamos que . Dado que toda produccin de G1 es equivalente a una secuencia de cero o
ms producciones unitarias de G seguidas por una produccin no unitaria de G, sabemos que implica

. Es decir, todo paso de una derivacin en G1 puede reemplazarse por uno o ms pasos de derivacin en

56
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

G. Si unimos estas secuencias de pasos, tenemos que


Parte Slo-s. Supongamos ahora que w pertenece a L (G), sabemos que w tiene una derivacin ms a la izquierda,
es decir, . Cuando se emplea una produccin unitaria en una derivacin ms a la izquierda, la variable del
cuerpo se convierte en la variable ms a la izquierda, y as se reemplaza inmediatamente. Por tanto, la derivacin
ms a la izquierda en la gramtica G puede descomponerse en una secuencia de pasos en la que cero o ms
producciones unitarias van seguidas de una produccin no unitaria. Observe que cualquier produccin no unitaria
que no vaya precedida de una produccin unitaria es un paso por s misma. Cada uno de estos pasos puede
realizarse mediante una produccin de G1, porque la construccin de G1 ha creado exactamente las producciones

que reflejan una o ms producciones unitarias seguidas de una produccin no unitaria. Por tanto, .

Teorema U5.6
Si G es unaGIC que genera un lenguaje que contiene al menos una cadena distinta de , entonces existe otra GIC
G1 tal que L(G1) = L(G){ }, y G1 no tiene producciones- , ni producciones unitarias ni smbolos intiles.
DEMOSTRACIN. Comenzamos eliminando las producciones- aplicando el mtodo descrito anteriormente. Si
a continuacin eliminamos las producciones unitarias mediante el mtodo explicado en la Eliminacin de las
producciones unitarias, no introduciremos ninguna produccin-, ya que cada uno de los cuerpos de las nuevas
producciones es idntico a algn cuerpo de las antiguas producciones. Por ltimo, eliminamos los smbolos
intiles mediante el mtodo dado en Formas normales para las gramticas independientes del contexto. Como
con esta transformacin slo se eliminan producciones y smbolos y nunca se introduce una produccin nueva, la
gramtica resultante seguir estando desprovista de producciones- y de producciones unitarias.

Forma Normal De Chomsky.


Todo LIC no vaco sin tiene una gramtica G en la que todas las producciones tienen una de las dos formas
siguientes:

1. A BC, donde A, B y C son variables, o

2. A a, donde A es una variable y a es un smbolo terminal.


Adems, G no contiene smbolos intiles. Una gramtica as se dice que est en la forma normal de Chomsky, o
FNC
Para expresar una gramtica en la forma normal de Chomsky, partimos de una que satisfaga las restricciones del
Teorema U5.6; es decir, la gramtica no contiene producciones-, ni producciones unitarias ni smbolos intiles.
Toda produccin de dicha gramtica es de la forma A a, que es una forma permitida por la FNC, o tiene un
cuerpo de longitud 2 o superior. Nuestras tareas son entonces:
1. Conseguir que todos los cuerpos de longitud 2 o superior estn formados slo por variables.

57
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

2. Descomponer los cuerpos de longitud 3 o superior en una cascada de producciones, teniendo cada una de
ellas un cuerpo formado slo por dos variables.
La construccin para (a) es la siguiente: para todo smbolo a que aparezca en un cuerpo de longitud 2 o superior,
creamos una nueva variable, por ejemplo A. Esta variable slo tiene una produccin, A a. Ahora empleamos
A en lugar de a en cualquier lugar que aparezca esta ltima dentro de un cuerpo de longitud 2 o superior. En este
punto, toda produccin tendr un cuerpo formado por un slo smbolo terminal o por al menos dos variables y
ningn smbolo terminal.

Para el paso (b), tenemos que descomponer dichas producciones AB1B2 Bk, para k 3, en un grupo de
producciones con dos variables en cada cuerpo. Introducimos k2 nuevas variables, C1, C2,. . ., Ck2. La
produccin original se reemplaza por las k1 producciones:

58
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.5 DIAGRAMAS DE SINTAXIS


Los diagramas sintcticos, de sintaxis o diagramas del ferrocarril son una forma de representar una gramtica
libre de contexto. Representan una alternativa grfica para la Forma de Backus-Naur (BNF, por sus siglas en
ingls) o la Forma Extendida de Backus-Naur (EBNF).
Constan de una serie de cajas o smbolos geomtricos conectados por arcos dirigidos. Veamos las reglas que rigen
la construccin de cada grafo:
1. Cada smbolo terminal se representa por su nombre encerrado en un crculo o en una caja de bordes
circulares.
Terminal: Un smbolo es terminal cuando tiene entidad propia y se describe por s mismo.

2. Cada smbolo no terminal se representa por su nombre encerrado en un rectngulo.


No Terminal: Un smbolo es no terminal cuando requiere una explicacin mediante una regla o produccin.

3. Para las producciones que tengan varias alternativas, el grafo resultante ser del tipo:

4. Para las producciones que contengan una serie concatenada de smbolos terminales y/o no terminales,
bastara simplemente con conectar simplemente a continuacin del otro grafo de cada smbolo.

5. Para las producciones que tengan cero, una o ms repeticiones de un smbolo la representacin ser:

59
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Veamos la sintaxis de SENTENCIA CONDICIONAL, usando diagramas sintcticos en vez de BNF.

Con los grafos o diagramas sintcticos somos capaces de representar la sintaxis de un lenguaje y podemos
utilizarlos en lugar del conjunto de producciones en BNF. Es ms, los diagramas sintcticos son mucho ms claros
y concisos, facilitando la comprensin del lenguaje, dada su mejor asimilacin. Tiene un inconveniente, y es la
dificultad de representacin.

Ejemplo: Diagrama sintctico para expresiones aritmticas.

60
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.6 ELIMINACIN DE LA AMBIGEDAD.


Una gramtica es ambigua si puede generar una secuencia de smbolos con dos rboles sintcticos diferentes.
Una gramtica ambigua puede rescribirse para eliminar la ambigedad.
Ejemplo:

<a> ::= <a> (+ | *) <a> | nmero


Secuencia: 1*2+3
Arboles sintcticos generados:

Una gramtica no se puede utilizar para la realizacin de un compilador por que no especifica la estructura
sintctica del lenguaje.

instr If expr then instr


| If expr then instr else instr
| otra

Aqu, otra representa a cualquier otra instruccin. De acuerdo con esta gramtica, la siguiente instruccin
condicional compuesta:

Ejemplo: La gramtica S aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda

S aS aa S Sa aa

61
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Proceso.
- No existe un algoritmo que nos indique si una GIC es ambigua.
- Existen LIC que slo tienen GIC ambiguas: inherentemente ambiguos.
- Para las construcciones de los lenguajes de programacin comunes existen tcnicas para la eliminacin de la
ambigedad.
- Ejemplo:
Causas de ambigedad en la siguiente gramtica.
No se respeta la precedencia de operadores
Una secuencia de operadores idnticos puede agruparse desde la izquierda y desde la derecha. Lo
convencional es agrupar desde la izquierda.

Ejemplo: Modificamos la gramtica para forzar la precedencia

62
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.7 TIPOS DE ANALIZADORES SINTCTICOS


Hay dos categoras generales de algoritmos para construir analizadores sintcticos: los analizadores sintcticos
descendentes y los analizadores sintcticos ascendentes. Estos a su vez se subdividen en varios mtodos, cada
uno de los cuales tiene distintas capacidades y propiedades.

Tipos De Analizadores Sintcticos Descendentes (Top-Down)


Construyen el rbol de anlisis sintctico desde arriba (raz o axioma de la gramtica) hacia abajo (hojas con los
terminales):
Anlisis sintctico por descenso recursivo (o con retroceso): este analizador hace una bsqueda en
profundidad retroceso, es decir, que puede hacer varios exmenes de la entrada. Presenta el inconveniente de
que no es eficiente.
Anlisis sintctico predictivo: es un analizador que no necesita retroceso. Para poder utilizarlos la gramtica
no puede ser ambigua y se determina qu regla aplicar a partir de un anlisis previo de los tokens de la entrada
(smbolo de pre-anlisis, que es el componente lxico de la cadena de entrada situado ms a la izquierda). Un
ejemplo de este tipo de analizadores sintcticos descendentes es el mtodo LL(1)

Tipos De Analizadores Sintcticos Ascendentes (Bottom-Up)


Construye el rbol de anlisis sintctico desde abajo hacia arriba.
Analizadores de precedencia de operador: Se utiliza para un pequeo conjunto de gramticas, denominadas
gramticas de operadores (una propiedad que deben cumplir estas gramticas es que no pueden tener dos
terminales seguidos). Se definen relaciones de precedencia disjuntos entre los terminales, que son los
operadores, y estas relaciones guan la seleccin de las producciones.
Analizadores LR: Hacen un examen de la entrada de izquierda a derecha (left-to right, L) y construyen las
derivaciones por la produccin ms a la derecha (rightmost derivation, R). Estos analizadores tambin son
denominados analizadores por desplazamiento y reduccin. Hay varios autmatas LR y todos llevan un
smbolo de anlisis por anticipado de la entrada (smbolo de lookahead).

Analizadores sintcticos descendentes


Los analizadores sintcticos descendentes pueden considerarse como una manera de encontrar una derivacin por
la izquierda para una cadena de entrada. Como se ha indicado, los hay de dos tipos: recursivos (tambin
denominados con retroceso) y predictivos.

Analizadores sintcticos por descenso recursivo.


Contiene un conjunto de procedimientos recursivos, donde cada no terminal de la gramtica tiene asociado un
procedimiento. Cuando se construye el rbol de anlisis, al llegar a la terminal comprueba si el procedimiento

63
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

escogido es el adecuado y si lo es avanza el siguiente token, si no lo es emite mensaje de error y aplica una
estrategia de recuperacin que puede consistir en deshacer la operacin, retroceder y llamar a otro procedimiento.

Analizador Sintctico Predictivo LL (1).


Es un analizador sintctico descendente que no necesita retroceder, y para ello es necesario que a partir del token
a reconocer, sea posible determinar qu regla se debe aplicar. El mtodo LL (1) es efectivo porque est basado en
un autmata a pila que contiene en la misma terminales y no terminales (aunque en la cima de la pila siempre hay
un no terminal), y en una tabla de anlisis, donde se especifica la produccin a aplicar para cada token que se
tenga que reconocer de la entrada y el no terminal que inicia la produccin. El significado de las siglas LL (1) es
el siguiente:

Las caractersticas del mtodo LL (1) son: 1. No necesita retroceso. 2. Se


sabe qu produccin hay que aplicar para cada token de la entrada. 3. No
puede haber ambigedad en la gramtica.

rbol de anlisis descendente.


El algoritmo de construccin del rbol de anlisis sintctico descendente es el siguiente:
Algoritmo de construccin del rbol de anlisis sintctico descendente:
1. Colocar el axioma como raz del rbol de derivacin.
2. Hasta que solo haya terminales en las hojas derivar por el smbolo que est ms a la izquierda y hacia la
derecha.
Veamos un ejemplo: en la siguiente tabla, puedes comprobar los pasos y rboles correspondientes a la aplicacin
del algoritmo (ver supuestos iniciales):

Paso 1: E E Paso 5: T nmero

64
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Paso 2: E T + E Paso 6: E T

Paso 3: T nmero

Paso 7: T nmero

Paso 4: E T * E

Dado que la gramtica es ambigua, estos pasos pueden ser aplicados de diferente forma. En este caso, la
ambigedad, que se resuelve factorizando, no hubiera cambiado el rbol de anlisis sintctico.
Supuestos iniciales Gramtica ambigua
Cadena de entrada = nmero + nmero * La gramtica es ambigua, puesto que las tres
nmero producciones de la gramtica comienzan por T.
Gramtica:
ET|T+E|T*E
T identificador | nmero

Gramtica ambigua.
Si estuviramos usando un mtodo recursivo (o con retroceso), puesto que es uno de
los tipos de anlisis sintctico descendente (y hubiramos aplicado la primera
produccin como paso 2): E T * E, al derivar el terminal a partir de T, T numero,
e l rbol quedara como se puede comprobar en la imagen y, con la produccin que se
ha aplicado, no llegaramos a reconocer la sentencia.
Por tanto se hubiera tenido que retroceder para aplicar la otra produccin vlida: E
T + E. Por eso estos mtodos son tan ineficientes mientras que los mtodos LL(1) son

65
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

capaces de detectar la siguiente produccin a aplicar basndose en una tabla y viendo el carcter de la entrada que
toca reconocer en cada momento sin necesidad de recursividad.

Analizadores sintcticos ascendentes


Hay varios tipos de analizadores sintcticos LR, dependiendo de cmo se construya el AFD y la tabla de anlisis
en el que estn basados. El significado del acrnimo LR (k) es el siguiente:

Al igual que el mtodo LL(1), est basado en un pila y en una tabla de


anlisis sintctico que tiene dos partes: accin e ir_a.

A este mtodo se le conoce tambin como anlisis sintctico por desplazamiento y reduccin (Aho, 1986).
Hay dos tipos, pero puesto que los analizadores por precedencia de operador se dedican a unas gramticas muy
restringidas, como las gramticas de operador, nos vamos a centrar en los analizadores LR que son los ms
extendidos por la amplitud de gramticas que manejan. Los analizadores LR se subdividen a su vez en los
siguientes tipos:

SLR LR sencillo (Simple LR). Es el ms sencillo de implementar.

LR(1) Es el ms costoso de implementar, puesto que incorpora el clculo de los smbolos de lookahead a
cada estado del AFD. Tambin es el que ms gramticas reconoce.

LALR Se trata de conseguir los beneficios del mtodo LR (1) pero con el coste del mtodo SLR.

El mtodo ptimo, si soporta la gramtica, es el LALR, debido a que necesita el nmero mnimo de estados lo
que lo hace eficiente a la hora de reconocer una cadena de entrada.

Anlisis sintctico por desplazamiento y reduccin


Anlisis sintctico por desplazamiento: porque va desplazando el smbolo de la entrada a la pila de anlisis.
Anlisis sintctico por reduccin: porque se trata de sustituir una produccin de la gramtica por la frase
que la ha generado. Esta sustitucin se produce cuando el autmata ha reconocido la parte derecha de una
produccin, y se sustituye por la parte izquierda, reducindose el nmero de trminos en la pila.

rbol de anlisis ascendente


Para entender cmo se construye el rbol de anlisis sintctico ascendente necesitamos definir algunos conceptos,
para saber cmo se seleccionan las producciones que generan reducciones y permiten, por tanto, avanzar en la
construccin del rbol.
Uno de estos conceptos es el de mango (Aho, et al, 2008) que "es una subcadena que coincide con el cuerpo de
una produccin, y cuya reduccin representa un paso a lo largo del inverso de una derivacin por la derecha". Es

64
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

importante destacar que si una gramtica no tiene ambigedad, entonces cada forma de frase derecha de la
gramtica solo tiene un mango. Supongamos la gramtica de este enlace.
Cmo se realizara el proceso de reconocimiento por pasos? El mtodo LR nos indica que hay que leer la cadena
de entrada de izquierda a derecha y derivar por el smbolo que est ms a la derecha, una vez se ha reconocido el
mango.

65
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Gramtica
Mango Supongamos una gramtica en la que la cadena de
En ingls se define como handle. Hay traducciones en entrada es: nm * nm + nm:
las que el autor llama a este concepto pivote. ET+E|T
T num * T | num

rbol de sintaxis abstracta (ASA)


Los rboles de anlisis, tanto ascendentes como descendentes, son una forma de representacin til de una cadena
de entrada. Esta cadena de entrada se convierte en tokens que constituyen las hojas de este rbol de anlisis,
mientras que los nodos internos y la raz del mismo representan los pasos y la estructura para llegar al
reconocimiento de esa cadena de entrada.
Sin embargo, un rbol de anlisis contiene ms informacin de la necesaria para generar cdigo ejecutable, por
lo que necesitamos otra estructura que simplifique el rbol de anlisis sintctico pero que tenga toda la
informacin necesaria para el procesamiento eficiente del mismo. Esta estructura recibe el nombre de rbol de
sintaxis abstracta (ASA).
Veamos un ejemplo, a partir de la siguiente gramtica con esta cadena de entrada 3 + (4 + 6):
E E + E | ( E ) | num

El rbol de anlisis sintctico necesario sera:

66
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Podemos observar que nos sobran los nodos intermedios donde hay no terminales, as como terminales como los
parntesis. Seguimos teniendo en cuenta la estructura, pero obtenemos un rbol ms fcil de usar y de implementar
utilizando, en el caso de las operaciones, estructuras que tengan la operacin, el operando izquierdo y el operando
derecho.

67
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.8 GENERACIN DE MATRIZ PREDICTIVA (CLCULO FIRST Y


FOLLOW)
FIRST: Si es cualquier cadena de smbolos gramaticales, se considera FIRST () como el conjunto de terminales
que encabezan las cadenas derivadas de . Si = * => , entonces tambin est en FIRST (). Para calcular
FIRST(X) para algn smbolo X de la gramtica, se aplican las siguientes reglas hasta que no se pueda aadir
nada nuevo al conjunto.
FIRST: Sea G:= (V; ; Q0; P) una gramtica libre de contexto. Para cada forma sentencial (V U )* y para
cada k N definiremos la funcin.

En otras palabras, el operador FIRST k asocia a cada forma sentencial los primeros k smbolos de cualquier forma
terminal alcanzable desde mediante derivaciones masa a izquierda".
1. Si X es terminal, entonces FIRST(X) es {X}.
2. Si X es no terminal y existe la produccin X , entonces aadir a FIRST(X).
3. Si X es no terminal y X Y1 Y2.... Yk
Es una produccin entonces, para todo i (con i variando desde 1 hasta k) tal que Y1, Y2 , ..., Yi-1 sean todos no
terminales y FIRST(Y1), FIRST(Y2), ..., FIRST(Yi-1) contengan todos , se aaden todos los smbolos no nulos
de FIRST(Yi ) a FIRST(X). Finalmente, si est en FIRST (Yj) para j = 1, 2,..., k (o sea, en todos), entonces se
aade a FIRST(X). Dicho de otra forma, lo anterior significa que todos los elementos de FIRST (Y1), excepto
, pertenecen tambin a FIRST(X). Si Y1 no deriva , entonces ya ha terminado el clculo de FIRST(X), pero en
caso contrario, es decir, si Y1= * => , entonces todos los elementos de FIRST (Y2) excepto pertenecen tambin
a FIRST(X), y as sucesivamente. Finalmente, si todos los Yi derivan , entonces se aade a FIRST(X).

Ejemplo:
Construir una tabla de anlisis sintctico.

Para cada terminal a del First (). Adase A en la posicin M[A, a].

68
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

FOLLOW: Se define FOLLOW(A), para l no terminal A, como el conjunto de terminales a que pueden aparecer
inmediatamente a la derecha de A en alguna forma sentencia, es decir, el conjunto de terminales a tal que haya
una derivacin de la forma S= * => Aa para algn y . Si A puede ser el smbolo de ms a la derecha en
alguna forma sentencia, entonces $ est en FOLLOW(A).
Para calcular FOLLOW(A) para un smbolo no terminal A, se aplican las siguientes reglas hasta que no se pueda
aadir nada ms al conjunto FOLLOW.
1. $ est en FOLLOW(S), siendo S el axioma de G.
2. Si existe una produccin A B, entonces todo lo que est en FIRST (), excepto , est en FOLLOW
(B).
3. Si existe la produccin A B y FIRST () contiene (es decir, = * =>), o bien si existe una produccin
A B, entonces todo lo que est en FOLLOW(A) est en FOLLOW (B).
Con las mismas notaciones anteriores, para cada forma sentencia (V U )* definiremos la funcin FOLLOW
G GK () del modo siguiente.

De nuevo nos ocuparemos solamente de FOLLOW: = FOLLOW1. Obsrvese que FOLLOW k () * y que
para cada x FOLLOW (), Ixl k. Obsrvese que para cada variable A V, FOLLOW(A) son todos los
smbolos terminales que pueden aparecer a la derecha de A en alguna forma sentencia de la gramtica.

Ejemplo:

69
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.9 MANEJO DE ERRORES


Si un compilador tuviera que procesar slo programas correctos, su diseo e implantacin se simplificaran
mucho. Pero los programadores a menudo escriben programas incorrectos, y un buen compilador debera ayudar
al programador a identificar y localizar errores. Es ms, considerar desde el principio el manejo de errores puede
simplificar la estructura de un compilador y mejorar su respuesta a los errores.
Los errores en la programacin pueden ser de los siguientes tipos:
Lxicos, producidos al escribir mal un identificador, una palabra clave o un operador. Sintcticos, por una
expresin aritmtica o parntesis no equilibrados.
Semnticos, como un operador aplicado a un operando incompatible.
Lgicos, puede ser una llamada infinitamente recursiva.
El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la creacin de compiladores.
Nos interesa que cuando el compilador encuentre un error, se recupere y siga buscando errores. Por lo tanto el
manejador de errores de un analizador sintctico debe tener como objetivos:
Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localizacin.
Recuperarse del error, para poder seguir examinando la entrada.
No ralentizar significativamente la compilacin.
Un buen compilador debe hacerse siempre teniendo tambin en mente los errores que se pueden producir; con
ello se consigue:
Simplificar la estructura del compilador.
Mejorar la respuesta ante los errores.
Tenemos varias estrategias para corregir errores, una vez detectados:
Ignorar el problema (Panic mode): Consiste en ignorar el resto de la entrada hasta llegar a una condicin
de seguridad. Una condicin tal se produce cuando nos encontramos un token especial (por ejemplo un ;
o un END). A partir de este punto se sigue analizando normalmente.

Ejemplo:

70
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Recuperacin a nivel de frase: Intenta recuperar el error una vez descubierto. En el caso anterior, por
ejemplo, podra haber sido lo suficientemente inteligente como para insertar el token ; . Hay que tener
cuidado con este mtodo, pues puede dar lugar a recuperaciones infinitas.
Reglas de produccin adicionales para el control de errores: La gramtica se puede aumentar con las reglas
que reconocen los errores ms comunes. En el caso anterior, se podra haber puesto algo como:

Lo cual nos da mayor control en ciertas circunstancias


Correccin Global: Dada una secuencia completa de tokens a ser reconocida, si hay algn error por el que
no se puede reconocer, consiste en encontrar la secuencia completa ms parecida que s se pueda reconocer.
Es decir, el analizador sintctico le pide toda la secuencia de tokens al lxico, y lo que hace es devolver lo
ms parecido a la cadena de entrada pero sin errores, as como el rbol que lo reconoce.

71
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

5.10 GENERADORES DE ANALIZADORES SINTCTICOS

YACC.
Funcionamiento.
A partir de un fichero fuente en yacc, se genera un fichero fuente en C que contiene el analizador sintctico. Sin
embargo, un analizador sintctico de yacc no puede funcionar por s solo, sino que necesita un analizador lxico
externo para funcionar. Dicho de otra manera, el fuente en C que genera yacc contiene llamadas a una funcin
yylex() que debe estar definida y debe devolver el tipo de lexema encontrado. Adems, es necesario incorporar
tambin una funcin yyerror(), que ser invocada cuando el analizador sintctico encuentre un smbolo que no
encaja en la gramtica.

El Lenguaje Yacc.
Esquema general. Un programa fuente de Yacc se parece bastante a uno de lex. La diferencia principal est en la
seccin de reglas, que en vez de expresiones regulares contiene las reglas de la gramtica:

De estas tres secciones, slo la segunda es obligatoria, y no debe estar vaca (ntese que en lex, las tres
secciones pueden estar vacas). Esto quiere decir que el mnimo programa en yacc es:
%%
regla gramatical accin en C

72
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

La seccin de declaraciones puede incluir varias cosas, tal y como ocurra en lex, pero ahora su funcin
principal no es definir expresiones regulares, sino declarar los smbolos terminales de la gramtica mediante
la directriz %token. Todo lo que no sea un terminal, ser considerado un smbolo no terminal, y por tanto
debe haber una regla para l:
%token IF,ELSE,LLAVE_AB,LLAVE_CE,IDENT
La seccin de reglas contiene la gramtica en s. Componentes es una combinacin de terminales y no
terminales que describe al no terminal de la izquierda de la regla:
no_terminal: componentes {acciones en C}
La seccin de rutinas tiene la misma funcin que la de lex, pero yacc (dependiendo de su variante) no define
por defecto las funciones main(), yylex() e yyerror(), as que hay que incluirlas aqu, o bien en otro fichero
que se enlazar en la fase final de la compilacin.
Yacc genera una funcin llamada yyparse() que contiene el analizador sintctico. Esta funcin se comporta como
una mquina de estados cuya misin es intentar reducir todo el fichero de entrada al smbolo inicial de la gramtica
(el primero que se haya definido). Si yacc lo consigue, el analizador sintctico volver sin error, y en caso
contrario, se invocar a la funcin yyerror(), que debe estar definida tambin en algn sitio.

Seccin De Reglas
Una regla de yacc es parecida a una de lex, pero en vez de un patrn regular, especifica una regla de la gramtica.
Las reglas deben estar dadas de forma que la parte izquierda conste de un nico smbolo no terminal, y la parte
derecha indique la combinacin de terminales y no terminales de que puede estar compuesto. Adems, toda regla
debe incluir una accin en C que se ejecutar en cuanto yacc consiga encontrar los componentes del smbolo
resultado:
smbolo_result: componentes accin_en_C
El smbolo resultado debe estar situado en la primera posicin de la lnea; es decir, que no puede haber
espacios antes del smbolo resultado.
Los componentes son una combinacin de terminales y no terminales separados por espacios en blanco.
La accin puede ser una sola sentencia de C, o una sentencia compuesta, encerrada entre llaves {}.

Cdigo C En Un Programa Lex


Igual que en lex, muchas veces es til incluir cdigo en C dentro de un programa en yacc. Es normal utilizar esta
posibilidad para incluir las funciones main() e yyerror() en el mismo fichero. La funcin yylex(), sin embargo,
suele proporcionarse en un mdulo aparte, generado por lex, que se enlaza en la fase final de la compilacin.
Normalmente, el cdigo C se introduce en la seccin de declaraciones, o bien en la de rutinas:
En la seccin de declaraciones, entre una lnea %{ y una lnea %} (ntese que no es }%). Este cdigo ser
externo y se situar antes de la funcin yyparse() en el fichero y.tab.c.
En la seccin de rutinas todo lo que haya debe ser cdigo C, que ser externo y posterior a la funcin
yyparse().

73
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Unidad 6
Mquinas de Turing
6.1 DEFINICIN FORMAL MT
La Mquina de Turing (MT) fue introducida por Alan M. Turing en
1936, y puede considerarse como un modelo abstracto que formaliza
la idea Intuitiva de algoritmo.
(MT) Es un modelo computacional que realiza una lectura/escritura de
manera automtica sobre una entrada llamada cinta, generando una
salida en esta misma. Este modelo est conformado por un alfabeto de
entrada y uno de salida, un smbolo especial llamado blanco
(normalmente b, o 0), un conjunto de estados finitos y un conjunto
de transiciones entre dichos estados.
Su funcionamiento se basa en una funcin de transicin, que recibe un
estado inicial y una cadena de caracteres (la cinta, la cual es finita por
la izquierda) pertenecientes al alfabeto de entrada. Luego va leyendo
una celda de la cinta, borrando el smbolo, escribir el nuevo smbolo
perteneciente al alfabeto de salida y finalmente avanza a la izquierda o
a la derecha (solo una celda a la vez), repitiendo esto segn se indique
en la funcin de transicin, para finalmente detenerse en un estado final
o de aceptacin, representando as la salida.

Una mquina de Turing con una sola cinta puede ser definida como una 7-tupla;

Donde:
Es un conjunto finito de estados.
Es un conjunto finito de smbolos distinto del espacio en blanco, denominado alfabeto de mquina o de entrada.
Es un conjunto finito de smbolos de cinta, denominado alfabeto de cinta.
Es el estado inicial.
Es un smbolo denominado blanco, y es el nico smbolo que se puede repetir un nmero infinito de veces.
Es el conjunto de estados finales de aceptacin.

74
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Es una funcin parcial denominada funcin de transicin, donde es un movimiento a la izquierda y es el


movimiento a la derecha.
La mquina de Turing puede considerarse como un autmata capaz de reconocer lenguajes formales. En ese
sentido es capaz de reconocer los lenguajes recursivamente enumerarles, de acuerdo a la jerarqua de Chomsky.

Su potencia es, por tanto, superior a otros tipos de autmatas, como el autmata finito, o el autmata con pila, o
igual a otros modelos con la misma potencia computacional. Las mquinas de Turing se pueden representar
mediante grafos particulares, tambin llamados diagramas de estados finitos, de la siguiente manera:

Esta Mquina de Turing est definido sobre el alfabeto = {a, b, c}, posee el conjunto de estados Q = {qo, q1,
q2, q3, q4, q5, q6}, con las transiciones que se pueden ver. Su estado inicial es q1 y el estado final es q0, el
lenguaje de salida = {X, Y, Z, B} siendo B el smbolo denominado Blanco.
Esta Mquina reconoce la expresin regular de la forma {an bn cn,n>=0} .
Los estados se representan como vrtices, etiquetados con su nombre en el interior.
Una transicin desde un estado a otro, se representa mediante una arista dirigida que une a estos vrtices,
y esta rotulada por smbolo que lee el cabezal/smbolo que escribir el cabezal, movimiento del cabezal.
El estado inicial se caracteriza por tener una arista que llega a l, proveniente de ningn otro vrtice.
El o los estados finales se representan mediante vrtices que estn encerrados a su vez por otra
circunferencia.

COMO FUNCIONA UNA MAQUINA DE TURING?


Una mquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT despus de algunos pasos.
Tanto el INPUT como el OUPUT constan de nmeros en cdigo binario (ceros y unos). En su versin original la
mquina de Turing consiste en una cinta infinitamente larga con unos y ceros que pasa a travs de una caja.

75
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

La caja es tan fina que solo el trozo de cinta que ocupa un bit (0 1) est en su interior. La mquina tiene una
serie de estados internos finitos que tambin se pueden numerar en binario. Para llevar a cabo algn algoritmo, la
mquina se inicializa en algn estado interno arbitrario. A continuacin, se pone en marcha y la mquina lee el
bit que se encuentra en ese momento en su interior y ejecuta alguna operacin con ese bit (lo cambia o no,
dependiendo de su estado interno). Despus se mueve hacia la derecha o hacia la izquierda, y vuelve a procesar
el siguiente bit de la misma manera. Al final se para, dejando el resultado al lado izquierdo por ejemplo.
11011iUna instruccin tpica podra ser: 01

VARIANTES DE LA MAQUINA DE TURING


La traduccin es como sigue: si la mquina se encuentra en el estado interno 0 y lee 1 en la cinta, entonces pasar
al estado interno 1101 (13), escribir 1 y se mover hacia la izquierda un paso (la cinta se mover hacia la derecha).
A continuacin es conveniente inventar una notacin para la secuencia del INPUT. Esta notacin se llama
notacin binaria expandida. Consiste en cambiar la secuencia original binaria por otra construida de la siguiente
forma: el 0 se cambia por 0 y el 1 por 10 y se ponen un cero a la izquierda y/o a la derecha del resultado si empieza
o acaba en 1 respectivamente. As por ejemplo, el nmero 13 que en binario es 1101 es en binario expandido
1010010 con un cero delante por esta ltima regla 01010010. Para volver al original hay que contraer el binario
expandido con la siguiente regla: Empezamos a leer por la izquierda el binario expandido. Cuando encontremos
un 0 tomamos nota de cuntos 1 hay hasta llegar al siguiente 0 y lo escribimos. Si encontramos que hay dos 0
seguidos, apuntaramos un 0 porque no habra ningn 1.Veamos con el 13 cmo se hara.
El primer 0 se encuentra en la primera posicin y el siguiente 0 est en la posicin 3. Entre los dos solo hay un 1.
Lo anotamos. Seguidamente hay un 1, y despus un 0, entonces apuntamos 1 porque hay un 1 entre medias de
ellos. Esto es lo que se hace sucesivamente y encontramos: 1101 que es el nmero original.

QUE SON Y COMO FUNCIONAN?


Una mquina de Turing consiste, bsicamente, en una cinta infinita, dividida en casillas. Sobre esta cinta hay un
dispositivo capaz de desplazarse a lo largo de ella a razn de una casilla cada vez. Este dispositivo cuenta con un
cabezal capaz de leer un smbolo escrito en la cinta, o de borrar el existente e imprimir uno nuevo en su lugar.
Por ltimo, contiene adems un registro capaz de almacenar un estado cualquiera, el cual viene definido por un
smbolo.

76
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Los smbolos que definen el estado del dispositivo no tienen por qu coincidir con los smbolos que se pueden
leer o escribir en la cinta. En los programas presentados en el artculo, los posibles smbolos a leer o escribir en
la cinta son el 0 y el 1, y los posibles estados se representan con letras maysculas. En el emulador, existe un
cambio en la representacin del estado, usando para ello los nmeros del 0 al 99, para permitir un mayor nmero
de ellos. La mquina tiene un funcionamiento totalmente mecnico y secuencial. Lo que hace es leer el smbolo
que hay en la casilla que tiene debajo. Despus toma el smbolo del estado en que se encuentra. Con estos dos
datos accede a una tabla, en la cual lee el smbolo que debe escribir en la cinta, el nuevo estado al que debe pasar
y si debe desplazarse a la casilla izquierda o derecha.
Ejemplo Definimos una mquina de Turing sobre el alfabeto {0,1}, donde 0 representa el smbolo blanco. La
mquina comenzar su proceso situada sobre un smbolo 1 de una serie.
La mquina de Turing copiar el nmero de smbolos 1 que encuentre hasta el primer blanco detrs de dicho
smbolo blanco. Es decir, situada sobre el 1 situado en el extremo izquierdo, doblar el nmero de smbolos 1,
con un 0 en medio. As, si tenemos la entrada 111 devolver 1110111, con 1111 devolver 111101111,
y sucesivamente.
El conjunto de estados es {s1, s2, s3, s4, s5} y el estado inicial es s1.
La tabla que describe la funcin de transicin es la siguiente:

El funcionamiento de una computacin de esta mquina se puede mostrar con el siguiente ejemplo (en negrita se
resalta la posicin de la cabeza lectora/escritora):

77
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Vemos que esta mquina no hace gran cosa. Sin embargo, una mquina de Turing puede hacer cosas tiles, tales
como suma r dos nmeros, multiplicarlos, copiarlos, etc. Disponiendo de una mquina con el suficiente nmero
de estados, podramos hacer con ella cualquier operacin que un ordenador normal pudiese realizar.
Las mquinas de Turing plantean una deduccin bastante curiosa: dado que en ellas se puede realizar cualquier
trabajo computable, es posible programarlas para que simulen el comportamiento de un potente ordenador. Y
como una mquina de Turing puede ser codificada en cualquier ordenador, por pequeo que sea, sera posible (si
disponemos de memoria suficiente, claro) emular en nuestro ordenador de casa una mquina de Turing que simule
un superordenador. Esto significa que todos los ordenadores pueden realizar exactamente el mismo tipo de tareas,
y que los clculos que pueda realizar el ms grande los puede llevar a cabo tambin el ms pequeo. La nica
diferencia sera, obviamente, la velocidad.

78
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

6.2 CONSTRUCCIN MODULAR DE UNA MT


El objetivo de la creacin modular de una mquina de Turing es poder desarrollar mquinas complejas a partir de
bloques elementales, a partir de mquinas ms pequeas, mediante diagramas de transiciones. La construccin de
mquinas de Turing se lleva a cabo mediante los diagramas de transicin y combinarlos de manera parecida a lo
que se realiza en la formacin de la unin y concatenacin de los autmatas finitos.

Pasos para la construccin de una mquina de Turing:


1. Elimine las caractersticas de inicio de los estados iniciales de las mquinas, excepto la de aquel donde
iniciara la maquina compuesta.
2. Elimine las caractersticas de detencin de los estados de parada de todas la maquinas e introduzca un
nuevo estado de parada que no se encuentre en ninguno de los diagramas que se combinan.
3. Para cada uno de los antiguos estados de parada p y cada x en y.

Ejemplificacin de dicha construccin.

Los diagramas compuestos para la construccin modular de una mquina de Turing:


Son aquellos en los que cada uno de los bloques de construccin se representa como un nodo, con flechas entre
dichos nodos para indicar las transiciones entre bloques.
Se puede combinar dos mquinas de Turing permitiendo que compartan la misma cinta y, que cuando una termine
su ejecucin, la otra empiece. El contenido de la cinta cuando comienza la ejecucin de la segunda mquina de
Turing, est formado por todo lo que dej la primera mquina de Turing, y la cabeza de l/e de la segunda se
situar, al comienzo de la ejecucin, sobre la celda de la cinta sobre la que termin la primera.

79
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

Un sistema Turing completo es aquel que puede simular el comportamiento de una mquina de Turing. Es
evidente que salvando los problemas de memoria, los ordenadores modernos y los lenguajes de programacin de
uso general, son sistemas de Turing completos. Tambin es evidente, que con independencia de su forma concreta,
cualquier dispositivo que se comporte como un sistema de Turing completo, puede en principio ejecutar cualquier
clculo que realice cualquier computador.
Nota: Observe que la anterior afirmacin no menciona para nada la posible dificultad de escribir el programa o
del tiempo que pueda emplear en realizar el clculo (cualquier clculo que pueda hacer un ordenador puede
tericamente efectuarse con papel y lpiz).
Una mquina de Turing es un autmata que se mueve sobre una secuencia lineal de datos. En cada instante la
mquina puede leer un solo dato de la secuencia (generalmente un carcter) y realiza ciertas acciones en base a
una tabla que tiene en cuenta su "estado" actual (interno) y el ltimo dato ledo. Entre las acciones est la
posibilidad de escribir nuevos datos en la secuencia; recorrer la secuencia en ambos sentidos y cambiar de "estado"
dentro de un conjunto finito de estados posibles.

Mquinas de Turing Compuesta.

80
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

6.3 LENGUAJES ACEPTADOS POR LA MT.


De acuerdo a la clasificacin de los lenguajes formales realizada por el norteamericano Avram Chomsky, la
Mquina de Turing acepta los lenguajes ms generales, o tipo cero (0), tambin llamados lenguajes
recursivamente enumerables.
Un lenguaje recursivamente enumerable es un lenguaje formal para el cual existe una mquina de Turing que
acepta y se detiene con cualquier cadena del lenguaje, pero que puede parar y rechazar, o bien iterar
indefinidamente, con una cadena que no pertenece al lenguaje. Todos los lenguajes, regulares, independientes de
contexto, dependientes de contexto y recursivos son recursivamente enumerables.

Una cadena A^*, es aceptada por una MT, si comienza en el estado e0, con la cabeza de lectura/escritura en
el smbolo ms a la izquierda, luego de leer toda la cadena , llega a un estado e_fF. El lenguaje aceptado por
MT, es el conjunto de todas las cadenas que son aceptadas por MT:

L(MT)={ / e_0 *_1 e_f _2 y e_fF y _1,_1 C^* y A^* }


Tenemos por ejemplo una MT que reconoce el lenguaje {0^n 1^n:n1}. Las transiciones de la mquina se
representan como sigue:

Se evala la cadena w = 1100, arrojando el siguiente resultado:

Otras cadenas tambin aceptadas por esta MT son 11110000, 10, 11111110000000.

Lenguajes regulares: las gramticas (de tipo 3) formales definen un lenguaje describiendo como se pueden
generar las cadenas del lenguaje Las gramticas regulares (aquellos reconocidos por un autmata finito). Son

81
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

las gramticas ms restrictivas. El lado derecho de una produccin debe contener un smbolo Terminal y como
mximo un smbolo no Terminal.

Lenguajes Libres de contexto: Estas gramticas conocidas tambin como gramticas de tipo 2 o gramticas
independientes del contexto, son las que generan los lenguajes libres o independientes del contexto. Los lenguajes
libres del contexto son aquellos que pueden ser reconocidos por un autmata de pila determinstico o no
determinstico. Como toda gramtica se definen mediante una cudrupla G=N, T, S, P), siendo N un conjunto
finito de smbolos no terminales; T un conjunto de smbolos terminales: P un conjunto finito de producciones; S
es el smbolo distinguido o axioma.

Ejemplo1
Aqu se describe una MT M2 que reconoce el lenguaje consistente de todas las cadenas de 0s cuya longitud es
una potencia de 2. La MT decide el lenguaje A = {02n | n 0}.
M2 = Sobre la cadena de entrada w:
1. Recorrer la cinta de izquierda a derecha, marcando un cero si y otro no.
2. Si en el paso 1 la cinta contiene slo un cero, aceptar.
3. Si en el paso 1 la cinta contiene ms de un cero y la cantidad de ceros es impar, rechazar.
4. Regresar la cabeza de la cinta hasta la posicin ms a la izquierda.
5. Ir al paso 1.
Q = { q1, q2, q3, q4, q5, qaceptar, qrechazar }
={0}
= { 0, x, }
se describe en el diagrama de estados de la figura 4.4
Los estados iniciales de aceptacin y rechazo son q1, qaceptar, qrechazar, respectivamente

82
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

En la imagen anterior la etiqueta 0 , R aparece en la transicin de q1 a q2. Esto significa que, cuando M2 se
encuentra en el estado q1 con la cabeza de la cinta leyendo un 0, la mquina va al estado q2, escribe y mueve
la cabeza de la cinta a la derecha (R). En otras palabras (q1, 0) = (q2, , R). Para mayor claridad se usa 0 R
en la transicin de q3 a q4, lo cual significa que M2 se mueve a la derecha cuando lee un 0 en el estado q3, pero
no altera la cinta, (q3, 0) = (q4, 0, R).
A continuacin podemos ver una corrida de M2 sobre la cadena de entrada 0000.

83
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

84
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

CONCLUSIN

En resumen podemos concluir los siguientes conceptos:


Una gramtica formal es la descripcin de la estructura de las cadenas de un lenguaje, esa gramtica se
describe mediante reglas de reescritura.

De acuerdo a la clasificacin de Chomsky las gramticas se clasifican en 4 tipos, del 0 al 3 donde la


restriccin de la gramtica aumenta conforme se asciende.

Un lenguaje es el conjunto de todas las sentencias que pueden ser generadas a partir de las reglas de
rescritura de la gramtica.

Los lenguajes que son generados dependen del tipo de gramtica utilizada. La del tipo 0 genera los
recursivamente enumerables, tipo 1: sensibles al contexto, tipo 2: independientes del contexto y el tipo 3
generan los lenguajes regulares. La relacin entre los lenguajes es de inclusin no estricta:

Un lenguaje recursivamente enumerables contiene pero no es igual a un lenguaje sensible al


contexto, el cual contiene pero no es igual al lenguaje independiente del contexto, el que a su
vez contiene pero no es igual a un lenguaje regular, no es igual ni puede serlo.

Un autmata es una maquina terica capaz de realizar las computaciones necesarias para reconocer los
patrones de un determinado lenguaje y as poder determinar si la cadena pertenece o podra pertenecer a
un lenguaje o no.

Hay 3 tipos de autmatas para reconocer los lenguajes:


o Los autmatas finitos. Reconocen a los lenguajes tipo 3 y hay deterministas y no deterministas.
Para cada autmata no determinista se puede construir un autmata determinista que reconozca el
mismo lenguaje regular, es decir, todos los autmatas finitos son equivalentes. Un autmata no
determinista tiene mayor poder computacional que un autmata determinista
o Los autmatas de pila. Estos autmatas, dependiendo de su caracterstica particular no son
equivalentes
o Las maquinas Turing. Puede ser determinista, no determinista o de varias cintas. Todas son
equivalentes y por no tanto no aumenta el poder computacional de la mquina, es el mismo.

85
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

86
Unidad: INSTITUTO TECNOLGICO SUPERIOR
DE LA CHOAPAS VERACRUZ. Grupo: 5C Fecha: 11/12/17
1-6
Materia: Lenguajes y Autmatas I. Docente: Joel Carrera Herrera
Alumno: Vianell Guadalupe Almazn Alor. Clave de Asignatura: SCD-1015
____

BIBLIOGRAFA
Bastidas, C. (s.f.). Ejemplo de analizador lxico sintctico y semntico. Obtenido de
https://gramaticasformales.wordpress.com/category/ejemplo-de-analizador-lexico-sintactico-y-
semantico/
Edgar Ruiz L, E. R. (s.f.). CONVERSIN DE UN AFN A UN AFD. Obtenido de INGENIERA DE
SISTEMAS E INFORMTICA:
http://sisbib.unmsm.edu.pe/bibvirtualdata/publicaciones/indata/Vol6_n1/pdf/conversion.pdf
John E. Hopcroft, R. M. (2007). Introduccin a la teora de autmatas, lenguajes y computacin. Madrid:
PEARSON EDUCACIN S.A., Addison Wesley.
Lenguajes y Automatas I. (17 de Junio de 2016). Obtenido de http://lenguajesyautomatas1unidad6-
4.blogspot.mx/2016/06/diagramas-de-sintaxis.html
Lovelle, J. M. (Noviembre de 2011). Catedrtico de E.U. de Lenguajes y Sistemas Informticos. Obtenido
de Departamento de Informtica. Universidad de Oviedo:
http://di002.edv.uniovi.es/~cueva/publicaciones/AUTOMATA.pdf
Mejia, A. V. (23 de 10 de 2016). in SlideShare. Obtenido de Automatas Finitos:
https://es.slideshare.net/AnelVeronicaUchihaLP/automatas-finitos-70286440?from_action=save
PROGRAMACION DE SISTEMAS. (s.f.). Obtenido de Traductor y su estructura.: http://ing-radjchv-
pmz-estl.blogspot.mx/2009/09/14-traductor-y-su-estructura.html
Universiddad. (s.f.). ANLISIS SINTCTICO. Obtenido de
http://www.cartagena99.com/recursos/alumnos/apuntes/ININF2_M4_U3_T2.pdf
UV. (s.f.). uUV. Obtenido de https://www.uv.mx/ncruz/documents/LibroAlumnos.pdf

87

También podría gustarte