ESTRUCTURA DE LOS LENGUAJES DE...

30
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA AQUI) FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS). SEMANTICA OPERACIONAL: Se describe el significado de cada construcción del lenguaje en términos de las operaciones correspondientes en un procesador abstracto.

Transcript of ESTRUCTURA DE LOS LENGUAJES DE...

Page 1: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

DEFINICION DE UN LENGUAJE

SINTAXIS

(BNF-EBNF-DIAGRAMAS DE SINTAXIS).

+

SEMANTICASEMANTICA

OPERACIONAL(APROXIMACION UTILIZADA AQUI)

FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS).

SEMANTICA OPERACIONAL: Se describe el significado de cada

construcción del lenguaje en términos de las operaciones

correspondientes en un procesador abstracto.

Page 2: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

SIMPLESEM

-PUNTERO DE INSTRUCCIONES

-MEMORIA(DE DATOS-DE CODIGO)

ip

Code Memory Code Memory

(C) (D)

Explicar la semántica de un comando explicando las operaciones correspondiente en

SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA).

Page 3: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

PROCESAMIENTO DE UN LENGUAJE

CONVERSION ENTRE LENGUAJES

DE ALTO NIVEL --a--> DE MAQUINA

que interpreta que interpreta

un programador la computadora

ALTERNATIVAS

INTERPRETACION: ejecución pasa a paso de cada instrucción de

un programa .

CICLO: LECTURA-DECODIFICACION-EJECUCION

Menor velocidad-Relativo aprovechamiento de memoria(solo se

carga una instrucción por vez).

Page 4: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

COMPILACION: Conversión completa de un programa antes de su

ejecución.

FASES: COMPILACION-ENSAMBLADO

LINKEDITADO-CARGADO-EJECUCION

Mayor velocidad-Todo el programa debe cargarse en memoria paraMayor velocidad-Todo el programa debe cargarse en memoria para

su ejecución.

Page 5: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

LIGADURA (BINDING)

Programas � tratan con entidades (funciones,variables,sentencias).

� poseen atributos (nombre, tipo, parámetros).

BINDING: Proceso de especificación de la naturaleza exacta de cada

atributo.

Ligadura Proceso asociado

*entre una variable y su nombre *Identificación

*Entre una variable y su tipo *Determinación

*Entre un programa y su espacio *Reserva de espacio

de almacenamiento.

*Entre un subprograma y sus *Pasaje de parámetros

parámetros .

Page 6: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

LENGUAJES DIFERENTES:

• En número de entidades

• En número de atributos

• En momento de realizarlo

– Binding estático

– Binding Dinámico

• BINDING CONGELADO -> CONSTANTE

( Valor de la variable cuando es creada)

Page 7: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

VARIABLES

Atracción de la noción de celda de memoria de una computadora.

Caracterizada por:

NOMBRE: usado para identificar y referirse a una variable.

AMBITO: es el rango de instrucciones de programa sobre el cualAMBITO: es el rango de instrucciones de programa sobre el cual

una variable es conocida y manipulada. Fuera de el la variable es

INVISIBLE.

TIEMPO DE VIDA: es el intervalo de tiempo en el que un espacio de

almacenamiento (memoria) es asociado con una variable. Este

proceso es llamado ALOCACION.

Page 8: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

VALOR: es el contenido del espacio de memoria asignado a al

variable. Esta representado en forma codificada (cadena de

bits). Esta codificación se interpretara de acuerdo al TIPO de la

variable.

TIPO: es la especificación de la clase de valores que puede serTIPO: es la especificación de la clase de valores que puede ser

asociada con una variable junto con el conjunto que pueden

usarse para crear, modificar y acceder tales valores.

Page 9: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

TIPOS PREDEFINIDOS

BOOLEAN: valores posibles(TRUE, FALSE).

Operaciones(AND, OR, NOT).

TIPOS DEFINIDOS POR EL USUARIO

Type T= array [1..10] of BOOLEAN

TIPOS ABSTRACTOS DE DATOSTYPE counters

DEFINITION

Integer range 0..59

OPERATIONS

Up(counters);

down(counters);

Zero(counters)

END counters;

Page 10: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

LIGADURA DINAMICA DE TIPOS

(APL SNOBOL)

A�5 (variable simple)

�A (etiqueta)

A�1 -2- 51(arreglo unidimensional)

Page 11: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

UNIDADES DE PROGRAMAS

Descomposición de un programa:

1)Componentes de una Unidad de Programa:

-Segmento de código: fijo, se almacena en C[].

-registro de activación: variable, contiene toda la información

necesaria para la ejecución de una unidad de programa. Se

almacena en D[].almacena en D[].

�Variables locales y No locales.

�Información de binding.

�punto de retorno.

2)Activación de una Unidad de programa:

-una única instancia por unidad.

-mas de una instancia por unidad(lenguajes recursivos).

Page 12: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

ESTRUCTURA DE LOS LP EN TIEMPO DE EJECUCION

DIVISION DE LOS LP DE ACUERDO A SUS REQUERIMIENTOS DE MEMORIA

a)Estáticos: con requerimientos de memoria

predeterminados.(FORTRAN,COBOL).

b)Basados en pila: con requerimientos de memoria

Predeterminados y con una estrategia de pila.(ALGOL 60).

c)Dinámicos: con requerimientos de memoria

Impredecibles (LISP,PROLOG,APL, JAVA).

d)Híbridos: b)+ c).(PASCAL, C, ADA).

Page 13: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

EJEMPLOS DE CADA CLASIFICACION DE LENGUAJES:

1)Estructura del lenguaje FORTRAN (estáticos) .

Almacenamiento de un programa FORTRAN en memoria(todos los

segmento de código juntos en C[] y todos los registros de

activación en D[]).

Activation record for global data

code memory(c) data memory(d)

Code segment for unit 1

Code segment for

unit 2

Code segment for

unit 3

Code segment for

unit n

ip

Activation record for global data

Activation record for unit 1

Activation record for unit 2

Activation record for unit n

Page 14: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

• COMPILACION -> LENGUAJE MÁQUINA

• LINKADO -> ASIGNACIÓN DE MEMORIA

• CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)

Page 15: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

Ejs: Si RA (Registro de activación) de la unidad “i” se asigna a memoria a partir de la posición 830 – La Posición de datos referenciada como [i,10] será direccionada como D[840]

• El desplazamiento 0 tiene el puntero de retorno

Notación d[i,j] = es la posición de j a partir del RA de la unidad iNotación d[i,j] = es la posición de j a partir del RA de la unidad i

c[i,j] = instrucción en el desplazamiento j del segmento de codigo de la unidad i

X = es c[i,j] o d[i,j] para indicar la dirección de x

Page 16: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

• El traductor o compilador trasladará nombres de variables a un par de c[i,j] o d[i,j]

• El linkador a direcciones c[m] o d[m]

Page 17: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

Constructores descriptos: GOTO-CALL-RETURN (Transferencia de control).

Sentencia Ligadura Linkeditado RA

GOTO X � ip:=& c[i,j] (1) ip:= j COMMON

CALL P � d[P,0]:=ip+2 (2) D[m]:=ip+2 MAIN

ip:=&c[P,0] ip:=n X

RETURN � ip:=d[P,0] ip:=D[m] RETURN � ip:=d[P,0] ip:=D[m]

(1) i = unidad que está siendo trasladada - x = etiqueta de la instrucción localizada en

el desplazamiento j del segmento de código de la unidad i.

(2) Almacena el punto de retorno en la posición 0 del registro de activación de la

unidad P - b) Reemplazar el contenido del puntero de instrucción &c[P,0], la

primera instrucción de la unidad P transfiere el control a P. (luego del link m en la

dirección asignada al segmento de código de P.

(3) Reemplazar el puntero de instrucción en el contenido d[P,0] retorno de la unidad P

Link = m dirección de RA de P

Page 18: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

Descripción en términos de funcionamiento de SIMPLESEM

D(3)=ip+2

Ip=5

Ip=3

noop

halt

0 main

ip

common

main

x

I

Return Point

J

Return Point

Khalt

D(4)=5

D(0)=6

D(5)=D(0)+D(4)

Ip=D(3)

halt

x

Code memory

x

Data memory

K

J

Page 19: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

D(3)=Ip+2

Ip=5

Ip=3

noop

halt

5

ip

2

common

main

I

Return Point

J

Return Pointhalt

D(4)=5

D(0)=6

D(5)=D(0)+D(4)

Ip=D(3)

halt

x K

J

Code memory

Data memory

Page 20: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

D(3)=ip+2

Ip=5

Ip=3

Noop

Halt

7

ip

6

2

5

common

main

x

I

Return Point

J

Return Point

KHalt

D(4)=5

D(0)=6

D(5)=D(0)+D(4)

Ip=D(3)

halt

Code memory

5x K

J

Data memory

Page 21: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

PROGRAMA LIGADURA LINKEDITADO

INTEGER I,J I <-> d[COMMON,0] I <-> D[0]

COMMON I I <-> d[MAIN,1] I <-> D[2]

CALL X 10 <-> c[MAIN,3] 10 <-> C[3]

GOTO 10 X <-> c[X,0] X <-> D[5]

Page 22: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

SOUBROTINE X I<-> d[COMMON,0] I <-> D[0]

INTEGER K,J K<-> d[X,1] K <-> D[4]

COMMON I J<-> d[X,2] J <-> D[5]

K=5

I=6

J=1+KJ=1+K

RETURN

END

Page 23: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

D(3)=ip+2

Ip=5

Ip=3

Noop

halt

2

ip

5

2

common

main

halt

D(4)=5

D(0)=6

D(5)=D(0)+D(4)

Ip=D(3)

halt

Code memory

5

11

x

Data memory

Page 24: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

2)Estructura del lenguaje ALGOL (Basado en Pila)

unit A

unit D

unit B

end B end C end D

unit C

end A

unit E

end B

end F

end E

end C end D

end G

unit F

unit G

A

BE

C

D

F G

Page 25: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

Unidades de ejecución � Disjuntas

� Anidadas

Problemas básicos � Recursividad

� Variables dinámicas:� Variables dinámicas:

type T=array [m,n] of real

Page 26: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

VENTAJA BASICA DE UTILIZAR UNA ESTRUCTURA DE PILA:

Cada registro de activación que se carga en memoria, y se deja

libre ese espacio al finalizar su ejecución!!

1)Agregar en los registros de activación enlaces dinámicos

(además del punto de retorno).

2)Agregar dos punteros mas a SIMPLESEM:

2.1)free: siguiente dirección libre de memoria.

2.3)current: apunta al inicio del registro de activación actual.

Page 27: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

CALL B � D[free]:= ip+5

D[free+1]:=current

current :=free

free:= free+S (S tamaño de B)

ip:= n

RETURN � free:=current

current:=D[current+1]

ip:=D[free]

Ejemplo:sea la siguiente secuencia de llamadas de rutinas

F�G�F�G�F�E�A

Page 28: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

Genera la siguiente secuencia SIMPLESEM

A

E

F

F

F

G

G Current

Free

Page 29: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

3)ESTRUCTURA DE LOS LENGUAJES DINAMICOS

(APL,SNOBOL,LISP)

CONCEPCION: lenguajes con reglas dinámicas

� A locación

� Ligadura de tipo

� Ligadura de ámbito

IMPLEMENTACION: Almacenamiento de los registros de activaciónIMPLEMENTACION: Almacenamiento de los registros de activación

en una pila y enlace de los mismos a través de ENLACES

DINAMICOS

Page 30: ESTRUCTURA DE LOS LENGUAJES DE …sintaxis-semantica.wikispaces.com/file/view/Simplesem+-+Módulo+IV... · estructura de los lenguajes de programacion definicion de un lenguaje sintaxis

ESTRUCTURA DE UN PROGRAMA APL

Main

program

Subprogram

SUB

Function

subprogram

FUN