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.
30
Embed
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 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
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