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.

Upload: bajardo-javier

Post on 06-Jan-2015

47 views

Category:

Documents


6 download

TRANSCRIPT

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