You are on page 1of 25

INTRODUCCIN A LOS LENGUAJES

1 Definicin de lenguaje
2 Lenguajes formales
2.1 Requisitos
2.2 Aplicaciones
2.3 Especificacin
2.4 Gramticas
2.4.1 Definicin y Ejemplos
2.4.2 Ambigedad
2.4.3 Clasificacin de Chomsky
2.5 Lenguajes y teora de autmatas
1
INTRODUCCIN A LOS LENGUAJES

3 Traductores e intrpretes
3.1 Anlisis lxico
3.2 Anlisis sintctico
3.3 Anlisis semntico
3.4 Generacin de la salida

2
1. DEFINICIN DE LENGUAJE

Medio de expresin y comunicacin

Ejemplos
Lenguaje habitual (oral o escrito)
Lenguaje de las seales de trfico
Lenguaje de los sordomudos
Lenguaje para que los ciegos puedan leer
Lenguaje matemtico
Lenguaje mquina
Lenguajes de programacin
Etc

3
1. DEFINICIN DE LENGUAJE

Fundamento bsico:

asociacin SMBOLO-SIGNIFICADO

ALFABETO: conjunto finito de smbolos

- con significado (chino)


- sin significado (castellano, ingls)

LENGUAJE: secuencias de smbolos del alfabeto

4
1. DEFINICIN DE LENGUAJE

B.L. Whorf

Language shapes the way we think, and determines


what we can think about

1 Tenemos que codificar (shapes)


2 Limita lo que podemos expresar (determines)
(imaginemos un lenguaje sin recursividad)

5
2. LENGUAJES FORMALES

2.1 Requisitos

No ambigedad
Cada cadena del lenguaje debe tener una nica
interpretacin

Completitud en su definicin
Ejemplo: imaginemos que no se define la situacin
de una variable ndice de bucle al finalizar el mismo

6
2.2 APLICACIONES

Diseo de hardware (VHDL)

Diseo de software:

Editores con ayuda sintctica


Lenguajes de programacin (C, ADA, JAVA, LISP, PROLOG, .. )
Lenguajes ensambladores y mquina
Lenguajes para procesado de seales (MATLAB)
Lenguajes para pginas web (HTML, XML)
Lenguajes para bases de datos (SQL)

7
2.3 ESPECIFICACIN

SINTAXIS y SEMNTICA

SINTAXIS: determina las cadenas que pertenecen al


lenguaje

SEMNTICA: determina el significado de cada cadena


del lenguaje. Se especifica de forma informal en los
manuales de referencia de los lenguajes

8
2.3 ESPECIFICACIN

Sintaxis: especificacin

Por extensin (slo para lenguajes finitos)

L= { aa, bb }

Por propiedades

L = { anbn | n>0 }

Utilizando un Metalenguaje: las Gramticas

9
2.4 GRAMTICAS

G (Vt , Vn , P , S)

Vt Vocabulario de smbolos terminales


Vn Vocabulario de smbolos no terminales
V= Vt U Vn
P Conjunto de reglas de produccin ( , )
V+ V*
Nomenclatura habitual: :=

S Smbolo principal (S Vn)


10
EJEMPLOS

L={0n1n | n0}

G: R1 S 0S1
R2 S

S 0S1 00S11 000S111 000111

Derivacin
Forma sentencial
Sentencia
11
GRAMTICAS EQUIVALENTES

G y G son equivalentes L(G)=L(G)

Ejemplo: L={ambn | m,n0}

G: R1 SAB G: R1 SASB
R2 AaA R2 S
R3 A R3 Aa
R4 BbB R4 A
R5 B R5 Bb
R6 B
12
2.4.2 GRAMTICAS AMBIGUAS

Una gramtica es ambigua si, y solo si, para alguna


cadena del lenguaje existe ms de un rbol sintctico.

Ejemplo: la gramtica G anterior es ambigua

1. S ASB aSB aB ab
2. S ASB AASBB ASBB aSBB aBB
abB ab

Tenemos una cadena con, al menos, 2 rboles sintcticos


13
2.4.3 CLASIFICACIN DE CHOMSKY

Gramticas Tipo 0

V+ V*

Gramticas Tipo 1

V+ V* || ||

14
2.4.3 CLASIFICACIN DE CHOMSKY

Gramticas Tipo 2 (libres de contexto)

Vn ||=1 V*

Gramticas Tipo 3 (regulares)

Vn ||=1
es de la forma: a N | N a |
a Vt
N Vn
15
Relacin de inclusin

Tipo 0
Tipo 1
Tipo 2
Tipo 3

16
2.5 LENGUAJES Y TEORA DE AUTMATAS

Los lenguajes regulares son equivalentes a AFD


(Autmatas Finito Deterministas)

17
LENGUAJE REGULAR EQUIVALENTE

S0 a S1
S1 b S2 | c S3
S2 d S4
S3 e S4
S4 g S2 | f S3 |

18
3 TRADUCTORES E INTRPRETES

3.1 Anlisis lxico

Deteccin de los smbolos terminales del lenguaje

A=B+C*3

<id> <op_asig> <id> <op_suma> <id> <op_mul> <cte_ent>

Herramienta: LEX

19
3.2 ANLISIS SINTCTICO

Comprueba la estructura sintctica de una cadena

asignacion identificador := expresion


expresion expresion + expresion
| expresion * expresion
| ( expresion )
| identificador
| cte_entera

EJEMPLO: a := b + c * 3
20
3.2 ANLISIS SINTCTICO

21
Anlisis lxico / Anlisis sintctico

Se trata de una separacin un tanto artificial para ganar


velocidad en el proceso completo de reconocimiento.

Tal como explicamos anteriormente, los patrones


regulares de los elementos lxicos pueden expresarse
mediante gramticas regulares.

En ese caso, el anlisis lxico desaparecera casi por


completo, quedando reducido al reconocimiento de
caracteres.

22
3.3 ANLISIS SEMNTICO

Una cadena de un lenguaje puede ser sintcticamente


correcta, y sin embargo puede ser incorrecta desde el
punto de vista del significado (tipos, parmetros, etc.)

s=suma (a,b,c);

suma (int x, int y)
{
return(x+y);
}

23
3.4 GENERACIN DE LA SALIDA

1. Intrpretes
(ejecutan aquello especificado en el lenguaje)

Ejemplo: a := b + c * 3 (evala y asigna)

2. Traductores
(generan una especificacin de salida, que luego
ser traducida o interpretada)

Ejemplo: a := b + c *3 (genera cdigo)

24
3.4 GENERACIN DE LA SALIDA

a) Cdigo intermedio temp1= c * 3;


temp2= b + temp1;
a=temp2;

b) Cdigo ensamblador MOV c, R2


MUL #3, R2
MOV b, R1
ADD R2, R1, R3
MOV R3, a

25

You might also like