Click here to load reader

Introduccion a Los Lenguajes

  • View
    224

  • Download
    0

Embed Size (px)

DESCRIPTION

lenguajes y mas

Text of Introduccion a Los Lenguajes

GRAMTICAS Y LENGUAJES

Gramticas y Lenguajes

GRAMTICAS Y LENGUAJES

PRIVATE

NDICE:- DEFINICIONES DE TEORA DE LENGUAJES FORMALES2

- DEFINICIN FORMAL DE GRAMTICA4

- GRAMTICA RECURSIVA9

- GRAMTICA AMBIGUA9

- EJERCICIOS13

- RELACIONES21

- PROPIEDADES DE UNA RELACIN21

- PRODUCTO DE DOS RELACIONES21

- SUMA DE RELACIONES (UNIN)22

- CIERRE TRANSITIVO23

- IMPLEMENTACIN DE UNA RELACIN EN LA MAQUINA24

- RELACIONES BINARIAS APLICADAS A LENGUAJES FORMALES26

- RESTRICCIONES DE UNA GRAMTICA28

- CHEQUEO DE LAS RESTRICCIONES DE LA GRAMTICA29

- NOTACIN BNF EXTENDIDA (EBNF)31

- DIAGRAMAS SINTCTICOS33

- JERARQUA DE GRAMTICAS DE CHOMSKY35

- REFERENCIAS38

GRAMTICAS Y LENGUAJES

Est relacionado con los analizadores lxico y sintctico.

DEFINICIONES DE TEORA DE LENGUAJES FORMALES:

* LENGUAJE: Conjunto finito o infinito de sentencias.

* SENTENCIA: Secuencia de smbolos terminales. Desde el punto de vista de los lenguajes formales, una sentencia podra ser un programa y un lenguaje de programacin sera el conjunto de todos los posibles programas que se pudieran escribir.

* GRAMTICA: Conjunto finito de reglas que definen un lenguaje. Para un lenguaje dado pueden haber diferentes gramticas, pero una gramtica genera un nico lenguaje y adems permite definir la estructura sintctica de las sentencias.

* METALENGUAJE: Es un lenguaje que nos permite definir a otro lenguaje.

Tipos de metalenguajes: Notacin BNF (Backus-Normal-Form).

(Notacin de Backus y Naur)

-Esta notacin est compuesta

por reglas o producciones.

((

-TERMINAL

Unidad mnima sintctica en que

estn compuestos los programas

(lenguajes) (TOKEN).

* SMBOLO:

-NO TERMINAL

"Estructuras" de los

programas.

* ALFABETO: o Vocabulario terminal en relacin con el lenguaje, VT es el conjunto de smbolos terminales que se utiliza para formar sentencias.

{ begin,if,var,... } S VT

S = smbolo terminal.

* SECUENCIA O STRING: Se puede representar en forma de letras:

x = 'ABCD' A,B,C,D VTLa longitud de una secuencia de smbolos terminales se representa: (x( = 4.

* CONCATENACION: Es una operacin sobre strings; dada x e y se concatenan poniendo una detrs de otra:

x ='ABCD' y ='EF' xy = z ='ABCDEF' (xy( = (x( + (y(

* CABEZA DE UNA SECUENCIA: Subsecuencia que arranca a partir del primer smbolo:

cabezas de x = { 'A' , 'AB' , 'ABC' , ... } Head

* COLA DE UNA SECUENCIA: Subsecuencia que arranca a partir del ltimo smbolo:

colas de z = { 'F' , 'EF' , 'DEF' , ... } Tail

* PRODUCTO DE CONJUNTOS DE SECUENCIAS: Dados los conjuntos de secuencias A y B, el producto es:

C = { xy / x A /\ y B } A = { abc,ca,cc }

C = A * B B = { aa,c }

C = { abcaa,abcc,caaa,cac,ccaa,ccc }

* POTENCIA N-ESIMA DE UNA SECUENCIA: Es una concatenacin "n" veces:

n

Xn = XXXXX...X X = ab X3 = ababab

* POTENCIA N-ESIMA DE UN ALFABETO V:

Vn = Conjunto de todas las secuencias de longitud n que se pueden formar a partir de V = { S1...Sn / S1,S2,...,Sn V }

V = { a,b,c } V3 = { aaa,aab,aac,aba,aca,... }

* CIERRE TRANSITIVO (+): (positive closure).

1

V+ (((> Todas las posibles secuencias no nulas que se pueden formar con los smbolos de V de longitud arbitraria.

* SECUENCIA NULA = :

V0 = { }

(( = 0

* CIERRE TRANSITIVO REFLEXIVO (*):

2

V*V = V+ = VV* (xn( = n (x(DEFINICIN FORMAL DE GRAMTICA:

Una gramtica es una cudrupla (R , Z , VT , VN) donde:

VN = Conjunto finito de smbolos no terminales.

VT = Conjunto finito de smbolos terminales.

Z = Smbolo no terminal principal, es el que aparece en la raz del rbol. Z VN.

R = Es un conjunto finito de pares, llamados reglas de sustitucin o tambin, producciones, tal que cada produccin (x,) se escribe x x ::= ; donde x V+ y V*

3

a VT (letras minsculas).

A VN (letras maysculas).

x , y , z VT* (((((((((((

secuencias de smbolos terminales.

, , ... V* R = { Z 1 , N2 2 ,...}

secuencias

Con el smbolo G(Z) se suele denotar a una gramtica cuyo smbolo principal es Z. El lenguaje definido por la gramtica G se denota por L(G).

El proceso de sustitucin se representa por "(((>" y determina la derivacin; en sentido inverso se denomina reduccin.

ASG (((> VAR = EXP ; (((> VAR = TER REX ;

ASG (((>2 VAR = TER REX ;

(((> derivacin simple (((>2 derivacin mltiple.

Z (((>+ x L (aplicamos una o ms reglas de la gramtica).

ASG (((>+ VAR = TER REX ;

Z (((>* (aplicamos ninguna o ms reglas de la gramtica).

Z (((>0 Z =

Z (((>+

Z (((>*

Z =

Si partimos del smbolo principal:

Z (((>* V* = forma sentencial

Z (((>+ x VT*x = sentencia

x L(G)

Se define lenguaje de una gramtica G:

L(G) = { x / Z (((>G+ x /\ x VT* }

Sea el rbol:

Z

((((((((((((((((((((( A = B

( (((((((((((

n x y

( ( 1 ;

expresando su derivacin:

Z ((> A = B ((> n = B ((> n = x y ((> n = 1 y ((> n = 1 ;

Z (((>+ n = 1 ;

Otras posibles derivaciones:

Z ((> A = B ((> n = B ((> n = x y ((> n = x ; ((> n = 1 ;

Z ((> A = B ((> A = x y ((> n = x y ((> n = x ; ((> n = 1 ;

por tanto el rbol refleja las posibles derivaciones de una forma nica.

Se define frase a las secuencias que se pueden generar de un smbolo.

N (((>+ es frase de N

B (((>+ x y frase simple

B (((>+ 1 y

frases de B.

B (((>+ 1 ;

B (((>+ x ;

Las frases simples son aqullas que se generan con la aplicacin de una derivacin simple; son empleadas en el programa de reconocimiento (parsing), que consiste en, dada una sentencia y una gramtica, calcular una derivacin para esa sentencia:

Z ((> ... ((> ... ((> sentencia.

esto lo realiza el anlisis sintctico.

Es importante la localizacin de las frases simples, pues nos permitir obtener las formas sentenciales.

Si tenemos tres secuencias concatenadas de la siguiente forma:

Z ((>+ si Z ((>+ A B y A ((>+ entonces es frase de A.

La derivacin cannica (rightmost derivation) consiste: dada una forma sentencial aplicamos la gramtica al smbolo no terminal ms a la derecha (en la reduccin estar situado ms a la izquierda).

Z

A = B

A = x y

A = x ;

A = 1 ;

n = 1 ;

se representa por ((>C ((>rm

Nos interesa realizar reducciones cannicas, ya que origina, en un conjunto de smbolos, una frase simple situada a la izquierda. A la frase simple ms a la izquierda de una forma sentencial se le llama handle o pivote.

handle ==> n , 1 , ; , x y , A = B

El handle es interesante en un proceso de reconocimiento, ya que a la hora de construir el rbol no interesa almacenar en memoria todo el lenguaje fuente, adems es normal que se lea de izquierda a derecha, y conforme se vaya leyendo el texto fuente ir construyendo el rbol:

Z

( ((((((((((((((((((((((((((((((((((((((((( ( ( ( ( ( Q R ( ( ((((((((( ((((((((((( ( ( ( ( ( ( ( ( N F G ( ( ( (((((( ( ((((((((((( ( ( a b c d e f g h ((( (marca de final)

La mayora de los procedimientos de reconocimiento intentan que el mtodo pueda trabajar con la misma cantidad de informacin antes de empezar a reducir. Todo esto lo utiliza el mtodo ascendente.

(1) bc se reducen a N sin conocer el resto.

Por tanto, vamos a tener un conjunto de gramticas asociadas a mtodos de reconocimiento. Suponiendo una gramtica que permite (1), realizamos dicha reduccin y as eliminamos almacenamiento de memoria, quedndonos slo con la sentencia N.

La forma sentencial cannica sera: aN resto de fichero fuente; que va estar compuesto de dos partes: lo almacenado en memoria (aN) y lo que queda por leer del texto fuente.

A continuacin leeramos "d", que sera el handle y lo reduciramos a F, luego tendramos:

a N F

a Q (disminuiremos capacidad de almacenamiento) Handle

y as sucesivamente:

a Q e f g h

a Q G h

handle

a Q R

Z

En la prctica, suele ser difcil construir gramticas en las que solamente leyendo el ltimo elemento de la reduccin se produzca sta; como vemos hace falta tambin el siguiente elemento. El nombre del mto

Search related