La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA."— Transcripción de la presentación:

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

2 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 en SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA). ip

3 PROCESAMIENTO DE UN LENGUAJE CONVERSION ENTRE LENGUAJES DE ALTO NIVEL --a--> DE MAQUINA 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).

4 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 para su ejecución.

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

6 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)

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

8 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 ser asociada con una variable junto con el conjunto que pueden usarse para crear, modificar y acceder tales valores.

9 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 DATOS TYPE counters DEFINITION Integer range OPERATIONS Up(counters); down(counters); Zero(counters) END counters ;

10 LIGADURA DINAMICA DE TIPOS (APL SNOBOL) A 5 (variable simple) A (etiqueta) A (arreglo unidimensional)

11 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[]. 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).

12 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).

13 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[]). 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

14 COMPILACION -> LENGUAJE MÁQUINA LINKADO -> ASIGNACIÓN DE MEMORIA CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)

15 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

16 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]

17 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] (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

18 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 K J

19 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 K J Code memory Data memory

20 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 common main x I Return Point J K J Data memory

21 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]

22 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+K RETURN END

23 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 common main x Data memory

24 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 FG

25 Unidades de ejecución Disjuntas Anidadas Problemas básicos Recursividad Variables dinámicas: type T=array [m,n] of real

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

27 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

28 Genera la siguiente secuencia SIMPLESEM A E F F F G G Current Free

29 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ón en una pila y enlace de los mismos a través de ENLACES DINAMICOS

30 ESTRUCTURA DE UN PROGRAMA APL Main program Subprogram SUB Function subprogram FUN


Descargar ppt "ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA."

Presentaciones similares


Anuncios Google