estructura de los lenguajes de...
Post on 04-Feb-2018
227 Views
Preview:
TRANSCRIPT
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.
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).
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).
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.
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 .
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)
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.
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.
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;
LIGADURA DINAMICA DE TIPOS
(APL SNOBOL)
A�5 (variable simple)
�A (etiqueta)
A�1 -2- 51(arreglo unidimensional)
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).
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).
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
• COMPILACION -> LENGUAJE MÁQUINA
• LINKADO -> ASIGNACIÓN DE MEMORIA
• CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)
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
• 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]
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
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
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
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
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]
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
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
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
Unidades de ejecución � Disjuntas
� Anidadas
Problemas básicos � Recursividad
� Variables dinámicas:� Variables dinámicas:
type T=array [m,n] of real
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.
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
Genera la siguiente secuencia SIMPLESEM
A
E
F
F
F
G
G Current
Free
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
ESTRUCTURA DE UN PROGRAMA APL
Main
program
Subprogram
SUB
Function
subprogram
FUN
top related