ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS...

30
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS...

Page 1: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

DEFINICION DE UN LENGUAJE

SINTAXIS(BNF-EBNF-DIAGRAMAS DE SINTAXIS). +SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA AQUI) FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS).

SEMANTICA OPERACIONAL: Se describe el significado de cadaconstrucción del lenguaje en términos de las operacionescorrespondientes en un procesador abstracto.

Page 2: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

SIMPLESEM

-PUNTERO DE INSTRUCCIONES-MEMORIA(DE DATOS-DE CODIGO)

Code Memory Code Memory (C) (D)

Explicar la semántica de un comando explicando las operaciones correspondiente enSIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA).

ip

Page 3: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

PROCESAMIENTO DE UN LENGUAJE

CONVERSION ENTRE LENGUAJES

DE ALTO NIVEL --a--> DE MAQUINAque interpreta que interpreta

un programador la computadora

ALTERNATIVASINTERPRETACION: ejecución pasa a paso de cada instrucción deun programa .CICLO: LECTURA-DECODIFICACION-EJECUCION

Menor velocidad-Relativo aprovechamiento de memoria(solo secarga una instrucción por vez).

Page 4: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

COMPILACION: Conversión completa de un programa antes de suejecución.FASES: COMPILACION-ENSAMBLADOLINKEDITADO-CARGADO-EJECUCION

Mayor velocidad-Todo el programa debe cargarse en memoria parasu ejecución.

Page 5: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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 cadaatributo.

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 espaciode almacenamiento.*Entre un subprograma y sus *Pasaje de parámetrosparámetros .

Page 6: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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 cualuna variable es conocida y manipulada. Fuera de el la variable esINVISIBLE.

TIEMPO DE VIDA: es el intervalo de tiempo en el que un espacio dealmacenamiento (memoria) es asociado con una variable. Esteproceso es llamado ALOCACION.

Page 8: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

VALOR: es el contenido del espacio de memoria asignado a alvariable. Esta representado en forma codificada (cadena debits). Esta codificación se interpretara de acuerdo al TIPO de lavariable.

TIPO: es la especificación de la clase de valores que puede serasociada con una variable junto con el conjunto que puedenusarse para crear, modificar y acceder tales valores.

Page 9: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

TIPOS PREDEFINIDOS

BOOLEAN: valores posibles(TRUE, FALSE). Operaciones(AND, OR, NOT).

TIPOS DEFINIDOS POR EL USUARIOType T= array [1..10] of BOOLEAN

TIPOS ABSTRACTOS DE DATOSTYPE countersDEFINITIONInteger range 0..59OPERATIONSUp(counters);

down(counters);Zero(counters)

END counters;

Page 10: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

LIGADURA DINAMICA DE TIPOS(APL SNOBOL)

A5 (variable simple) A (etiqueta)A1 -2- 51(arreglo unidimensional)

Page 11: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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ónnecesaria para la ejecución de una unidad de programa. Sealmacena 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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 memoriapredeterminados.(FORTRAN,COBOL).b)Basados en pila: con requerimientos de memoriaPredeterminados y con una estrategia de pila.(ALGOL 60).c)Dinámicos: con requerimientos de memoriaImpredecibles (LISP,PROLOG,APL, JAVA).d)Híbridos: b)+ c).(PASCAL, C, ADA).

Page 13: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

EJEMPLOS DE CADA CLASIFICACION DE LENGUAJES:

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

Almacenamiento de un programa FORTRAN en memoria(todos lossegmento de código juntos en C[] y todos los registros deactivación en D[]).

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

ipActivation 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

• COMPILACION -> LENGUAJE MÁQUINA

• LINKADO -> ASIGNACIÓN DE MEMORIA

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

Page 15: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

• 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

Constructores descriptos: GOTO-CALL-RETURN (Transferencia de control).Sentencia Ligadura Linkeditado RAGOTO X ip:=& c[i,j] (1) ip:= j COMMONCALL P d[P,0]:=ip+2 (2) D[m]:=ip+2 MAIN ip:=&c[P,0] ip:=n XRETURN 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 PLink = m dirección de RA de P

Page 18: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

Descripción en términos de funcionamiento de SIMPLESEM

D(3)=ip+2

Ip=5

Ip=3

noop

halt

D(4)=5

D(0)=6

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

Ip=D(3)

halt

0 main

ip

x

Code memory

common

main

x

Data memory

I

Return Point

J

Return Point

K

J

Page 19: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

D(3)=Ip+2

Ip=5

Ip=3

noop

halt

D(4)=5

D(0)=6

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

Ip=D(3)

halt

5

ip

2

common

main

x

I

Return Point

J

Return Point

K

J

Code memory

Data memory

Page 20: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

D(3)=ip+2

Ip=5

Ip=3

Noop

Halt

D(4)=5

D(0)=6

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

Ip=D(3)

halt

7

ip

Code memory

6

2

5

common

main

x

I

Return Point

J

Return Point

K

J

Data memory

Page 21: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

PROGRAMA LIGADURA LINKEDITADOINTEGER 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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=5I=6J=1+KRETURNEND

Page 23: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

D(3)=ip+2

Ip=5

Ip=3

Noop

halt

D(4)=5

D(0)=6

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

Ip=D(3)

halt

Code memory

2

ip

5

2

5

11

common

main

x

Data memory

Page 24: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

2)Estructura del lenguaje ALGOL (Basado en Pila)

unit A

end A

unit E

unit D

unit B

end B

end F

end E

end C end D

end G

unit F

unit G

unit C

A

B E

C

D

F G

Page 25: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

Unidades de ejecución Disjuntas Anidadas

Problemas básicos Recursividad Variables dinámicas:

type T=array [m,n] of real

Page 26: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

VENTAJA BASICA DE UTILIZAR UNA ESTRUCTURA DE PILA:

Cada registro de activación que se carga en memoria, y se dejalibre 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 PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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

FGFGFEA

Page 28: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

Genera la siguiente secuencia SIMPLESEM

A

E

F

F

F

G

G Current

Free

Page 29: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

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ónen una pila y enlace de los mismos a través de ENLACESDINAMICOS

Page 30: ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.

ESTRUCTURA DE UN PROGRAMA APL

Main program

Subprogram SUB

Function subprogram FUN