estructura de los lenguajes de programacion definicion de un lenguaje sintaxis (bnf-ebnf-diagramas...
TRANSCRIPT
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.
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
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).
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.
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 .
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 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.
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.
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;
LIGADURA DINAMICA DE TIPOS(APL SNOBOL)
A5 (variable simple) A (etiqueta)A1 -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ó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).
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).
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
• 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 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 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
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
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
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
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]
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
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
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
Unidades de ejecución Disjuntas Anidadas
Problemas básicos Recursividad 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 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.
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
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ónen una pila y enlace de los mismos a través de ENLACESDINAMICOS
ESTRUCTURA DE UN PROGRAMA APL
Main program
Subprogram SUB
Function subprogram FUN