Sie sind auf Seite 1von 8

Introduccin a la Teora de Lenguajes Formales

1.1 Alfabeto
Se llama alfabeto a un conjunto finito, no vaco, cuyos elementos se denominan letras o
smbolos.
Se definen los alfabetos por la enumeracin de los smbolos que contiene.

Usamos subndices para distinguir diferentes alfabetos.
V = {a, b, c. z}
V = {0,1}
V = {a, b}

1.2 Cadenas

Sobre un alfabeto, una cadena es una secuencia finita de smbolos tomados de ese alfabeto.
Tambin se llama palabra o tira.

V = {a, b, c. . . , z} cadenas: perro, lobo, carro casa
V = {0,1} cadenas: 01, 001, 0011, 000111111, 0111
V = {a, b} cadenas: a, aa, baab, bbaa

De la misma cadena obtenemos la Longitud de cadena. Se describe como |s|, es la cantidad
de smbolos o letras que la componen.
V = {a, b}
S
1
= a | S
1
|=1
S
2
=babb | S
2
|=4
S
3
=aaaaba | S
3
|=6

Cadena vaca:
Es una cadena de longitud cero, no tiene ninguna letra.
| | = 0



1.3 Lenguajes
Sobre un alfabeto V, se le denomina lenguaje a cualquier conjunto de cadenas de V, se
representa con L.
L V* L puede ser finito o infinito
Tanto V como V
*
son lenguajes sobre V

V = {0,1,2,3,4,5,6,7,8,9}

L
1
(V) = {n de 3 cifras}
L
2
(V) = {todos los n}
L
3
(V) = {n binarios}

Conjunto vaco es aquel conjunto que n tiene ninguna palabra {}
Conjunto que contiene la cadena vaca: { }

1.3.1 Gramticas de Chomsky
Chomsky clasific las gramticas en cuatro grupos:
G
0
, G
1
, G
2
y G
3
.
Cada uno de estos grupos incluye las gramticas del siguiente.

G
3
G
2
G
1
G
0

Gramticas tipo 0
De lenguajes sin restricciones:

Las reglas de produccin tienen la forma u ::= v
Dnde:
u
+
, v *

En las reglas de produccin:
La parte izquierda no puede ser la palabra vaca.
En la parte izquierda (u) ha de aparecer algn smbolo no terminal.

Los lenguajes representados por estas gramticas reciben el nombre de Lenguajes sin
restricciones. Puede demostrarse que todo lenguaje representado por este tipo de gramticas
puede ser descrito tambin por un grupo de gramticas un poco ms restringido.

Gramticas tipo 1
Dependientes del contexto:

Las reglas de produccin tienen la forma xAy ::= xvy
Dnde:
xy *, v
+
y A ha de ser un smbolo no terminal.

Ya que v no puede ser la palabra vaca, se deduce que este tipo de gramticas no puede
tener reglas compresoras. Como consecuencia se tiene que la palabra vaca pertenece al
lenguaje generado por la gramtica solo si contiene esta regla.

Gramticas tipo 2
De lenguajes independientes de contexto:

Las reglas de estas gramticas se ajustan a siguiente esquema: A::= v
Dnde:

v * y A
NT
en concreto v puede ser

Para toda gramtica de tipo 2 existe una gramtica equivalente desprovista de reglas de la
forma A ::= , que generar el mismo lenguaje que la de partida, excepto la palabra vaca.
Si se le aade a la segunda gramtica la regla S ::= , las gramticas generarn el mismo
lenguaje.

Se pueden definir las gramticas de tipo 2 de una forma ms restringida, en el que las
reglas de produccin tendrn la siguiente forma
A ::= v
Dnde:
v
+
y A
NT

Adems podrn contener regla
S ::=

Gramticas tipo 3
De lenguajes regulares, tenemos:

Gramticas lineales por la izquierda:
A ::= a
A ::= Va
S ::=

Dnde:
a
T
, A,V
NT
y S es el axioma de la gramtica.


Gramticas lineales por la derecha:
A ::= a
A ::= aV
S ::=

Dnde:
a
T
, A,V
NT
y S es el axioma de la gramtica.



1.4 Tipos de lenguajes

Lenguaje formal: Es un conjunto finito o infinito de cadenas de smbolos primitivos. Los
smbolos y reglas para unir esas cadenas estn formalmente especificadas (formacin
matemtica).

Lenguaje de bajo nivel: Son lenguajes totalmente dependientes de la mquina, el
programa que se realiza con este tipo de lenguajes no se puede migrar o utilizar en otras
mquinas.

Lenguaje de alto nivel: Son aquellos que se encuentran ms cercanos al lenguaje natural
que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de
EDDS. Son lenguajes independientes de la arquitectura del ordenador, se pueden migrar de
una maquina a otra.
Lenguajes de medio nivel: Se encuentra en un punto medio entre los dos anteriores. Se
sita C, ya que accede a los registros del sistema, trabaja con direcciones de memoria,
caractersticas de lenguajes de bajo nivel y operaciones de alto nivel

1.4.2 Propiedades de los Lenguajes

Sean dos lenguajes regulares L
1
y L
2
:

Unin:
L=L
1
L
2
es regular, ya que se puede construir una expresin regular para L, teniendo
las expresiones regulares para L
1
y L
2
.
Con () () Tenemos: (( ))

Concatenacin:
L=L
1
L
2
es regular, ya que podemos construir una expresin regular para L , teniendo
las expresiones regulares para L
1
y L
2.
Con () () Tenemos: ( )

Clausura:
L=L
1
* es regular, podemos construir una expresin regular para L teniendo la expresin
regular para L
1
, mas preciso:
Con () tenemos (()

)

Interseccin:
L=L
1
L
2
es regular, porque con las reglas de DeMorgan:
L= L
1
L
2
= L
1
L
2
Complemento y Unin producen lenguajes regulares, como visto antes. Dicha construccin
es bastante laborosa.








1.5 Herramientas computacionales ligadas con lenguajes

Impresoras estticas:
Una impresora analiza un programa y lo imprime de forma que la estructura del programa
resulte claramente visible.

Formadores de textos:
Toma como entrada una cadena de caracteres, la mayor parte de la cual es texto para
componer, pero alguna incluye rdenes para indicar prrafos, figuras o estructuras
matemticas como subndices o superndices.

Editores de estructuras:
Un editor 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. Asi, el editor de
estructuras puede realizar tareas adicionales tiles para la preparacin de programas

Verificadores estticos:
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. Puede detectar si
hay partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de
ser definida.

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 intrpretes se
usan para ejecutar lenguajes de rdenes, pues cada operador que se ejecuta en un lenguaje
de rdenes suele ser una invocacin de una rutina compleja, como un editor o un
compilador.

Intrpretes de consultas:
Un intrprete de consultas traduce un predicado que contiene operadores relacionales y
booleanos a rdenes para buscar en una base de datos registros que satisfagan ese
predicado.


1.6 Estructura de un traductor

FASES PRINCIPALES






























Texto
Fuente
Fase de Anlisis
(Front end)
Fase de Sntesis
(Front end)
Texto
Objeto
Comprueba que el
programa est escrito
conforme a las reglas
del lenguaje
Genera el texto
equivalente en el
lenguaje objeto
Fase de Anlisis:
Gestin de
errores
Tabla de
smbolos

Anlisis lxico
Anlisis Sintctico
Anlisis Semntico
Secuencias de smbolos
rbol sintctico
Texto fuente














1.7 Fases de un compilador













Analizador lxico
Analizador sintctico
Analizador Semntico
Generador de cdigo
intermedio
Optimizador de cdigo
Generador de cdigo

Administrador de la
tabla de smbolos
Manejador
de errores
PROGRAMA FUENTE
PROGRAMA OBJETO
Fase de Anlisis:

Generador de Cdigo
intermedio
Optimizador Cdigo
intermedio
Generador Cdigo Objeto
Gestin de
errores
Tabla de
smbolos
Anlisis
sintctico
Texto
Objeto
Cdigo intermedio
Cdigo intermedio Optimizado

Das könnte Ihnen auch gefallen