Está en la página 1de 36

LENGUAJES Y TRADUCTORES

Profesor: Carlos A. Ruiz De La Cruz Melo


correo: zorroculto69@hotmail.com
Gramticas

Lenguaje (Chombsky)

Conjunto finito o infinito de oraciones(frases), cada
una de ellas de longitud finita y construidas por la
concatenacin de un conjunto finito de
elementos(vocabulario)

Lenguaje (Grassmann)

Consiste en un conjunto de frases finito o infinito.
Los lenguajes pueden ser especificados
enumerando de manera exhaustiva todas sus
frases. Sin embargo, para lenguajes infinitos dicha
enumeracin no es posible. Cualquier instrumento
que especifique un lenguaje debe ser finita.
Otras definiciones

Un lenguaje de programacin es una serie de
comandos que nos permiten codificar
instrucciones de manera que sean entendidas y
ejecutadas por una computadora.

Conjunto de smbolos y reglas que permiten la
comunicacin con un computador.
Lenguaje de programacin (Aho, Lam, Sethi y
Ullman)

Los lenguajes de programacin son
notaciones que describen los clculos a las
personas y las maquinas
ESPECIFICACIN DE
LENGUAJE
La especificacin de un lenguaje de programacin
implica la definicin de los siguientes elementos:



El conjunto de smbolos (o alfabeto) que se
pueden usar para construir programas correctos.

El conjunto de todos los programas correctos.

El significado de todos los programas correctos
LENGUAJE
Smbolo
Es una entidad abstracta :
Ejemplo: A, 7, $, (, etc

Alfabeto ( E )
Cualquier conjunto finito y no
vacio de elementos que
denominaremos smbolos
Ejemplo:
E
b
={ 0, 1}
E
v
={ a, e , i , o , u }


LENGUAJE
Cadena
Secuencia finita de smbolos del
alfabeto
- Ejemplo:
0, 1, 101, 1100 pertenecen a E
b


Longitud de una cadena w
Nmero de smbolos que contiene
una cadena y se denota por |w|
Ejemplo:
|1010| = 4
|aeiaa| = 5

Potencia de una cadena
Una cadena de i smbolos
a se denota por a
i

Ejemplo:
a
0
=
a
1
= a
a
2
= aa
LENGUAJE
Lenguaje (E* )
Es el conjunto de todas las
palabras sobre un alfabeto.
Ejemplo:
E*
b
={ , 0, 1, 101, 10,..}


LENGUAJE
GRAMATICA
Sistemas generativos, donde cada
string del lenguaje puede construirse
por pasos bien definidos,
especificados por las reglas de la
gramtica.

Por ejemplo en L = { a
n
b
n
/

n > 1 }
queremos indicar que las palabras
que constituyen el lenguaje son
todas las que estan formadas por
smbolos a seguidos de smbolos b
en igual nmero.

DEFINICION DE GRAMATICA
Una gramtica G es una cudrupla

G = ( V
n
, V
t
, P, S )

Una G impone una estructura a las frases
de un lenguaje

Es el mecanismo empleado para
establecer la estructura de un lenguaje,
es decir las sentencias que lo forman.

DEFINICION DE GRAMATICA
Vt : smbolos terminales o smbolos que aparecen
en las frases del lenguaje "
Vn : smbolos no terminales o auxiliares
P : Conjunto finito de producciones consistente de
expresiones de la forma o| donde o y | son
cadenas de smbolos, de tal modo que o e (Vn U
Vt )
+
y |e(Vn U Vt )
*
y cuyo significado consiste
en que o puede ser sustituido por la parte derecha
sea |.
S : smbolo inicial que pertenece a Vn
G = ( V
n
, V
t
, P, S )
GRAMATICA EJEMPLO
G= ( Vn, Vt, E, P)
Vn={ E }
Vt={ +, *, ( , ) , a }

P { E E + E
E E * E
E ( E )
E a
}
Anlisis para w = a*( a + a )
E
____ | ___
E * E
| |
a ( E )
____ | ____
E + E
| |
a a
TIPOS DE GRAMATICA
TIPO 3:
Gramatica regular/ racional / Kleene

Las producciones tienen la forma siguiente:

a) Lineales por la derecha

A aB
B a
con A,B c Vn , a c Vt U { }
TIPOS DE GRAMATICA
TIPO 3:
Gramatica regular/ racional / Kleene

b) Lineales por la izquierda

A Ba
B a
con A,B c Vn , a c Vt U { }
TIPOS DE GRAMATICA
TIPO 2:
Gramtica Libre del Contexto / algebraicas /
incontextuales ( G.L.C)

A o, A c Vn , o c ( Vn Vt )
-


Observacin:
Toda gramtica de tipo 3 es tambien de tipo 2
TIPOS DE GRAMATICA
TIPO 1:
Gramtica Sensible al Contexto / Contextuales

aAb aBb
donde
A c Vn
a, b c (Vn Vt)*
B c (Vn Vt)+

Definicion alternativa

a b
con | b | > | a |
a, b c ( Vn Vt )
+


TIPO 0:
Gramtica sin restriccion / Estructura de frase
LENGUAJE GENERADO POR
UNA GRAMATICA
Al lenguaje L generado por una
gramtica tipo X, se le conoce
como "lenguaje de tipo X".

El lenguaje recibe el nombre del
tipo de gramtica ms restringida
capaz de generarlo.
LENGUAJE GENERADO POR
UNA GRAMATICA
G
1

S aSa | que es de tipo 2 y tambin por
G
2

S aA |
A aS que es de tipo 3

Por lo tanto concluimos que el lenguaje es de tipo 3
El lenguaje formado por todas las
cadenas de longitud par sobre el
alfabeto E={a} se puede formar con las
gramticas G :
G.L.C
La mayor parte de los lenguajes de
programacin se representan mediante
una gramtica de este tipo.

Estas gramticas suponen una
ampliacin sobre las gramticas
regulares. Se caracterizan porque sus
reglas son de la forma:

r : Vn ( Vn Vt )
-

G.L.C
Dada G=( Vn, Vt, P, E)
Vn={ E } Vt = { +, *, a, ( , ) }
P={ E E+E
E E*E
E (E)
E a }

La secuencia:
E E*E E*E+E E*E+ a E* a + a a*a+ a
FORMA SENTENCIAL
G.L.C
Arbol de derivacin
E
E * E
E + E
a a
a
G.L.C. AMBIGUA
Una gramtica G es
ambigua si hay al menos
una cadena en L(G) que
tenga dos o mas rboles de
derivacin distintos.
Ejemplo de gramtica ambigua:

E E+E | E*E | (E) | a
G.L.C. AMBIGUA
Observemos que la cadena
a*a+a puede ser generada por
dos rboles de derivacin
E
E * E
E + E
a a a
E
E + E
E * E
a a a
G.L.C. AMBIGUA
Recomendacin
Para algunos tipos de
analizadores sintcticos es
preferible que la gramtica no sea
ambigua pues si lo fuera, no se
podra determinar de manera
exclusiva que rbol de anlisis
sintctico seleccionar para una
frase
G.L.C. AMBIGUA
Eliminar la ambiguedad
Se elimina la ambigedad atendiendo a la precedencia deseada
para los operadores. Una gramtica equivalente a la gramtica
anterior que no es ambigua es:
G=(Vn, Vt, P, E)
Vn= { E, T, F }
Vt = { + , * , a, ( ,) }
P = {
E E + T | T
T T * F | F
F a | ( E )
}
G.L.C. RECURSIVA
La recursin izquierda es un problema que debe ser
resuelto antes que se quiera trabajar con una
gramtica para construir un analizador descendente,
ya que ste no funcionar si la gramtica la posee.
Una gramtica es recursiva por la izquierda si tiene un
no terminal A tal que existe una derivacin para
alguna cadena o de la forma:
A A o , o c ( Vn Vt )
*
, A c Vn
+
ELIMINAR RECURSIVAD
Se sustituye AAo| | por las producciones no recursivas
por la izquierda

A | A A , A c Vn
A o A | a , | c ( Vn Vt )
*


B1 Y A B | X Z
B2 X Y Z

En apariencia, esta gramtica no tiene
recursin izquierda (ninguna produccin
empieza con el no terminal que se est
definiendo.

Reemplazando B1 en B2:

B1 Y A B | X Z
B2 X Y Z

Tenemos
X A B Z |X Z Z
Hay
recursividad
GRAMATICA
SIN RECURSION
Despus de eliminar la recursividad:

X A B Z X '
X Z Z X ' |

EJERCICIOS
Genere una gramtica para los siguientes casos:


1. L= { a
N
c b
M
b / N, M 0} genere una G lineal por la derecha
2. L= { aa
N
c
M
bd / N, M 0} genere una G lineal por la izquierda

3. L = { a
N
c b
N
/ N 0}

4. L= { a
N
b
N
/ N >0}
5. L= { a
N
b
N
c
N
/ N >0}
6. L= { a
N
b
M
c
N+M
/ N,M >0}


EJERCICIOS
7. L= { a
N
b
N
c
N
d
N
/ N >0}

8. Escriba una G para una linea de declaracion de variables. Por
ejemplo:

dato, suma, v88: integer

9. Escriba una G para reconocer una zona de declaracion de
variables. Por ejemplo

dato, a, b: integer;
cant, x: real;
Total: real;
EJERCICIOS
a) S abB
B cb
b) SAb
ABc
B
c) S aB
Bb BaB
B

d) S aBbB
BcBA
BAaab
A a
e) SA
AB
Bab
f) S aB
B bA
A

g) SSa
SbS
S
h) SBbA
BbabA
AabBA
i) SaBb
B
BbB
10. Para G=(Vn, Vt, P, S) Vn={S, A, B} Vt={a,b,c}
Indique los lenguajes que generan cada P
SOLUCION
L= { a
N
b
N
c
N
/ N >0}
Vn={ S, R, Q}
Vt={ a, b, c }
P={ SaSRQ / aRQ
QR RQ
aRab
bR bb
bQbc
cQcc }
S

aSRQ

aaRQRQ

aabQRQ

aabRQQ

aabbQQ

aabbcQ

aabbcc

S

aRQ

abQ

abc
LENGUAJE POO A DEFINIR
Estructura de un programa en java
Declaracin de variables:
tipos bsicos(enteros, reales, cadenas),
variables,
arrays de una dimensin
Operadores
aritmticos, relacionales, lgicos, separadores
Estructuras
sentencias o expresiones
comentarios
De decisin ( if else)
bucles (for, while)
selectivas (switch)
LENGUAJE POO A DEFINIR
Tipos abstractos de datos (clase)

Variables miembro (atributos)
Mtodos miembro (funciones)
Claves de acceso (private, public)
Objetos

Crear objetos
Invocar mtodos

También podría gustarte