semantica de accion

download semantica de accion

of 15

Transcript of semantica de accion

SEMANTICA DE ACCION

los mtodos formales en captulos anteriores, en particular semntica denotacional y estructural semntica operacional, se han ha utilizado ampliamente para proporcionar definiciones precisas y sin ambigedades de lenguajes de programacin. A diferencia de las definiciones informales escrito en Ingls o alguna otra lengua natural, tcnicas formales de definicin puede servir de base para probar las propiedades de los lenguajes de programacin y la correccin de los programas. Aunque la mayora de los programadores se basan en las especificaciones informales de idiomas, estas definiciones son a menudo imprecisos, incompletos, e incluso errneos. Ingls no se presta a definiciones precisas y sin ambigedades.

A pesar de los argumentos para confiar en las especificaciones formales de la programacin idiomas, los programadores en general a evitar cuando se est aprendiendo, tratando de entender, o incluso la implementacin de un lenguaje de programacin. Encuentran formales las definiciones de la notacin densa, crptica, ya diferencia de su forma de ver el comportamiento de lenguajes de programacin. Adems, las especificaciones formales difciles de crear con precisin, para modificar y extender. Definiciones formales de los lenguajes de programacin son grandes abrumador tanto para el diseador del lenguaje y el usuario de la lengua, y por lo tanto siguen siendo en su mayora no ledos. Los programadores de entender los lenguajes de programacin en trminos de conceptos bsicos tales como control de flujo, las consolidaciones, las modificaciones de almacenamiento, y el paso de parmetros. Las especificaciones formales a menudo ocultan estos conceptos hasta el punto de que el lector debe invertir un tiempo considerable para determinar si un lenguaje sigue parmetros de determinacin del alcance y la forma esttica o dinmica en realidad pas. A veces los conceptos ms fundamentales del lenguaje de programacin son los ms difciles de entender en una definicin formal.

Semntica de la accin, que intenta responder a estas crticas a los mtodos formales para la especificacin del lenguaje, se ha desarrollado durante los ltimos aos por Musgos Pedro con la colaboracin de David Watt. El objetivo de sus esfuerzos ha sido la elaboracin formal de especificaciones semnticas que reflejan directamente la conceptos comunes de clculo de los lenguajes de programacin y que se fcil de leer y entender. En este captulo se presenta una introduccin a los mtodos de la semntica de la accin mediante la especificacin de tres idiomas: la calculadora idioma en el captulo 9, Wren, y Pelican. CONCEPTOS Y EJEMPLOSSemntica de la accin se ha desarrollado a partir de la tradicin de la semntica denotacional, donde las entidades sintcticas (rboles abstractos de sintaxis) se asignan de composicin por funciones semnticas en entidades semnticas que actan como las denotaciones de los objetos sintcticos. La principal diferencia entre los dos mtodos de oficiales especificacin se encuentra en la naturaleza de las entidades semnticas. Las funciones semnticas de la semntica denotacional mapa frases sintcticas en primitivas matemticas valores, objetos estructurados, y como funciones de orden superior como son en el clculo

lambda en que las funciones se pueden aplicar a otras funciones. Por el contrario, la semntica accin utiliza tres tipos de entidades de primer orden como denotaciones: acciones, datos y rendidores. "Primer orden" significa que las acciones no se puede aplicar a otras acciones. Las entidades semnticas conocidas como acciones incorporan los resultados de comportamiento de clculo, utilizando los valores que se les pasa a generar nuevos valores que reflejan los cambios en el estado de la computacin. Las acciones son la motores que procesan datos y rendidores. Las entidades de datos consisten en valores matemticos, como enteros, booleanos valores, y las clulas abstractos que representan las ubicaciones de memoria, que encarnan partculas de la informacin. Los datos se clasifican en las clases para que los tipo de informacin procesada por la accin estn bien especificados en un idioma definicin. Tipo de datos se definen mediante especificaciones algebraicas de la forma en el captulo 12. Rendidores abarcan piezas sin evaluar de datos cuyos valores dependen dela informacin actual se cuentan el estado de la computacin. Rendidores son entidades que, en funcin de la actual de almacenamiento y el medio ambiente, se puede evaluar para obtener datos. Comenzamos nuestro anlisis de la semntica de la accin por considerar el significado de varias construcciones de un lenguaje sencillo de Pelican (ver seccin 9.5), la primera visin definiciones denotaciones y la introduccin de la notacin de accin suficiente para describir las construcciones en la semntica de accin. La figura 13.1 muestra la semntica ecuaciones para una especificacin denotaciones de las declaraciones de constantes y variables y el identificador de la evaluacin. Semntica denotacional expresa los detalles de una ecuacin semntica funcional, por lo que vemos muchos parmetros que se pasa a, y arrojaron valores de, las funciones semnticas de forma explcita. Por el contrario, cada accin en la accin semntica implica modos particulares de control y flujo de datos de forma implcita. Mucho de la informacin procesada por una accin se manipula de forma automtica cuando se realiza la accin.

En la semntica de accin, el significado de un lenguaje de programacin se define por asignacin de las frases del programa de acciones. El rendimiento de estos modelos de acciones la ejecucin de las frases del programa. Para definir estos conceptos a partir de unos pocos Pelican, que necesitamos para describir varias acciones primitivas, dos operaciones que datos de rendimiento, y dos acciones compuestas. Acciones primitivas pueden almacenar datos en celdas de almacenamiento, los identificadores se unen a los datos, calcular los valores, prueba de valores booleanos, y as sucesivamente. Las acciones primitivas siguientes son los necesarios para definir el fragmento de Pelican, ms algunos otros ejemplos:

Principio del formulario

Final del formulario

Estos ejemplos ilustran una convencin sintctica en la que los parmetros de las operaciones se indican con subrayado. Operaciones en la semntica de accin puede ser prefijo, infijo, o outfix. Los operadores han Outfix titulares nico lugar interno por ejemplo en "suma (_,_)". Los ltimos dos ejemplos anteriores se consideran prefijo ya que termina con un marcador de posicin. Operadores infijos comienzan y terminan con el argumento de lugares, por ejemplo, "_ o _". Las operaciones se evalan con el prefijo

tener la prioridad ms alta y la ms baja outfix. Son operadores de prefijo ejecutan de derecha a izquierda, y el infijo de izquierda a derecha. Operaciones-el otro rendidores en la accin semntica-da valores que dependen en la informacin actual, como el almacenamiento actual y la corriente enlaces:El Rendimiento almacenados en el valor de un determinado tipo almacenado en una ubicacin de memoria. Esta obligado a Ceda el objeto de un tipo determinado asociado a un identificador. El rendimiento dado el valor del tipo especificado dado a la accin.

Combinadores de accin son operaciones binarias que se combinan las acciones existentes, utilizando infijo notacin, para controlar el orden en que se llevan a cabo como subacciones as como el flujo de datos hacia y desde el subacciones. Combinadores de accin son utiliza para definir selectiva secuencial e iterativo, y el control de la estructuracin de bloques flujo, as como para gestionar el flujo de informacin entre las acciones. los siguientes dos de control de combinadores modelo secuencial y la eleccin no determinista, respectivamente:then Or

Realizar la primera accin, cuando se complete, realice las acciones de la segunda tomando los datos proporcionados por la primera accin.Lleve a cabo cualquiera de las dos acciones, la eleccin de una forma arbitraria, si no funciona, realizar la accin que utilice el estado original.

Estos ejemplos transmitir la idea bsica de las especificaciones de la accin. desde el prefijo las operaciones se evalan de derecha a izquierda, podemos omitir los parntesis en "Me unen a (la clula dada)" y "dar (el valor almacenado en (la clula vinculada a I))". Observe que una de las acciones en la ecuacin semntica ltimo debe fallar, produciendo as la unin constante o variable de la unin con el

identificador. En la segunda parte se describen las acciones primitivas, rendidores, y la accin combinators con ms detalle.

Una especificacin de un lenguaje de programacin utilizando la semntica de accin natural irrumpe en las dos piezas que se muestran en el siguiente diagrama.

La descripcin de la semntica de la accin en el libro de Peter musgos [Mosses92] especifica el significado de la notacin de la accin (el nivel ms bajo, que tambin se conoce como microsemantics) formalmente con los axiomas algebraicos para presentar la notacin y estructural semntica operacional para dar a la semntica de la accin de rendimiento. A continuacin se describe la notacin de la accin utilizando ejemplos, definiciones cortas Ingls, y diagramas, concentrando nuestros esfuerzos en el nivel superior, tambin conocida como macrosemantics, donde la semntica se concede a un lenguaje de programacin en trminos de la notacin de la accin. TIPO DE DATO

Los datos manipulados por un lenguaje de programacin es necesario especificar en una definicin semntica de la lengua. Estos datos son objetos estticos, matemticas que incluyen entidades tales como las clulas, las tuplas y mapas, as como la conjuntos de espera de los nmeros enteros y valores booleanos. Estas entidades estn obligadas a describir el comportamiento de los programas en el lenguaje. En la semntica de accin, los datos se clasifican en las clases, que son conjuntos de matemticas objetos equipados con

una variedad de operaciones con estos objetos. Estos las clases son definidos por especificaciones algebraicas. Los idiomas se presentan en este captulo requieren el tipo TruthValue y entero, que se pueden especificar en una forma similar a los mdulos en el captulo 12. En el espritu de la semntica de la accin, se define el tipo y TruthValue entero despus de la sintaxis algebraica especificaciones se encuentran en [Mosses92]. Omitimos las ecuaciones en las especificaciones y remite al lector al captulo 12 para los ejemplos.module TruthValues exports sorts TruthValue operations true : TruthValue false : TruthValue not _ : TruthValue TruthValue both ( _ , _ ) : TruthValue, TruthValue TruthValue either ( _ , _ ) : TruthValue, TruthValue TruthValue _ is _ : TruthValue, TruthValue TruthValue -- the equality relation end exports equations : end TruthValues module Integers imports TruthValues exports sorts Integer operations 0 : Integer 1 : Integer 10 : Integer successor _ : Integer Integer predecessor _ : Integer Integer sum ( _ , _ ) : Integer, Integer Integer difference ( _ , _ ) : Integer, Integer Integer product ( _ , _ ) : Integer, Integer Integer integer-quotient ( _ , _ ) : Integer, Integer Integer _ is _ : Integer, Integer TruthValue -- the equality relation _ is less than _ : Integer, Integer TruthValue _ is greater than _ : Integer, Integer TruthValue end exports equations : end Integers Operaciones de ordenacin permiten tipo de comparar y combinar para formar nuevos tipos. Estas operaciones corresponden a operaciones de conjuntos normales. Definicin: Sea S1 y S2 de dos tipos.

La unin o la unin de S1 y S2 se denota por S1 | S2. El encuentro o interseccin de S1 y S2 se denota por S1 y S2.La notacin S1 S2 S1 significa que es una subclasificacin de S2.

El tipo utilizado en una especificacin de la semntica de accin forman una red de acuerdo a la orden parcial. Cada clase incluye automticamente un elemento especial, nada llamado, lo que representa la falta de informacin en lo mismo forma que ^ se utiliz en la teora del dominio. Usamos el Datum clase para incluir a todos los valores manipulados por las acciones y se refieren a las tuplas de cada uno de cuyos componentes es un dato como de datos. Cada dato puede ser visto como un miembro de datos (Datum Datos), ya que una tupla singleton se identifica con la persona en la tupla. Con esta notacin, podemos hacer una pocas afirmaciones sobre tipos de datos: Los valores de expresar en Wren constituyen el tipo (Entero | TruthValue). (Entero | TruthValue) Datum. (Entero y TruthValue) = nada.

El valor especial Nothing juega un papel particularmente importante en las especificaciones de la accin, que representa el resultado de cualquier operacin o accin que termina anormal. Todo tipo de forma automtica contiene el valor de nada, lo que representa la clase vaca. La mayora de las acciones y operaciones de especificar el tipo de valores que ser utilizado y producido por su desempeo. Cada vez que el tipo de valor errneo aparece, el resultado no ser nada. Como con cualquier semntica metodologa, los programas se espera que sea sintcticamente correcta observancia del tanto en el contexto libre de sintaxis (BNF) y la sintaxis contextual (contexto las limitaciones de hacer frente a la comprobacin de tipos)-antes de ser sometidos a la semntica anlisis. A pesar de esto, la semntica de accin sigue una disciplina de tipo estrictamente en la especificacin del significado de las construcciones del lenguaje. Esta delineacin cuidadosa de los tipos de objetos manipulados por las acciones se suma a la informacin transmitida por las descripciones semnticas. Realizar una accin que corresponde a una construccin del lenguaje que viola restricciones de tipo resulta en fracaso. Un operacin (rendidor) que falla por cualquier razn produce nada de valor, y una accin que contiene este tipo de operacin, simplemente no.

Aunque podemos describir el tipo de acciones, las acciones mismas no forman una subclasificacin de Datum, ya que las acciones, que trabajan en los datos, no se puede manipular las acciones. Ms adelante veremos que las acciones pueden, sin embargo, se encapsula en de datos, llamado abstracciones, que puede ser "aprobado", causando con ello el rendimiento de las acciones. Este mecanismo permite que la semntica de accin para el modelo subprograma declaracin e invocacin. Semntica de la accin clasifica los datos de acuerdo con lo lejos que tienden a propagarse durante la ejecucin de la accin. Datos transitoria o tuplas de datos dado que los resultados inmediatos de la accin el rendimiento se llaman transitorios. Estos valores el modelo de datos dada por las expresiones. Se deben utilizar inmediatamente o se perdidos. mbito Estos datos consisten en enlaces de tokens (identificadores) a los datos como en los ambientes. Son accesibles (visibles) en todo el ejecucin de una accin y su subacciones, a pesar de que se puede ocultar temporalmente la creacin de mbitos interiores.

Estable de datos estable modelo de memoria como los valores almacenados en las clulas (o ubicaciones) definidos en la especificacin de una lengua. Cambios en el almacenamiento hecho durante la ejecucin de accin son duraderos, por lo que estable datos solamente puede ser modificado por las acciones explcitas.

Cuando se describen las acciones ms adelante, veremos que las acciones son clasificados por el tipo fundamental de los datos que se modifican. esta clasificacin da lugar a los aspectos llamados de la semntica de la accin que se determinan por el tipo de informacin principalmente implicados en la ejecucin de una accin. Rendidores

Durante la ejecucin de una accin, informacin cierta corriente de informacin se mantiene implcita, incluyendo: Los transitorios dado y dado por las acciones Los enlaces recibidos y producidos por las acciones El estado actual de la conservacinTrminos que evaluar para obtener datos, en funcin de la informacin actual, se llaman rendidores. Los rendidores en una especificacin de la accin semntica seleccione informacin para su procesamiento por las acciones de los transitorios, enlaces, y el almacenamiento, verificar su consistencia tipo. A continuacin se describen cuatro rendidores que juegan un papel importante en la especificacin del lenguaje. the given _ : Data Yielder

Rendimiento de los datos transitorios dados a una accin, siempre que est de acuerdo con la tipo de datos especificado.the given _ # _ : Datum, PositiveInteger Yielder Rendimiento del elemento ensimo de la tupla de datos transitorios dados a una accin, siempre est de acuerdo con la clasificacin especificada como Datum, donde n es el segundo argumento. the _ bound to _ : Data, Token Yielder Rendimiento del objeto asociado a un identificador indicado por el testigo en el actual enlaces, despus de comprobar que su tipo es el tipo de datos especificado como. the _ stored in _ : Data, Yielder Yielder Ofrecen el valor de ordenar los datos almacenados en la posicin de memoria indicada por el celular producido por el segundo argumento. Token denota una subclasificacin de alta productora que le da los identificadores. PositiveInteger es un subclasificacin de Integer. Estos rendidores son evaluados durante la realizacin de acciones para producir valores (datos) para ser utilizados por e impartido por acciones. ACCION Las acciones son entidades dinmicas, de cmputo que modelan el comportamiento operativo de lenguajes de programacin. Cuando se realiza, las acciones de aceptar los datos que se les pasa en la forma de la corriente de informacin, es decir, lo dado transitorios, los enlaces recibidos, y el estado actual de almacenamiento de informacin para dar transitorios de nuevo, producir nuevos enlaces, y / o actualizar el estado del almacenamiento. Si no hay ningn resultado intermedio se va a pasar a la siguiente accin, el transitorio es simplemente la tupla vaca. Del mismo modo, la unin de vaco, con todos los Sin consolidar, identificador, se pasa a la siguiente accin si la accin no produce enlaces. Dependiendo del tipo principal de la informacin procesada, las acciones se clasifican en varias facetas, entre ellas: faceta funcional: las acciones que procesan la informacin transitoria faceta imperativo: las acciones que procesan la informacin estable faceta declarativa: las acciones que procesan la informacin de mbito faceta bsica: acciones que principalmente especificar el flujo de control

faceta reflexiva: las acciones que se ocupan de abstracciones (subprogramas) Notacin de accin hbrido: acciones que tienen que ver con los enlaces recursiva Una actuacin puede completar la accin (terminar con normalidad), no (terminar anormal), o divergen (no terminar del todo). LA FACE FUNCIONAL Acciones y rendidores clasificados en la faceta funcional principalmente manipular los transitorios dado y dado por las acciones. En primer lugar consideramos compuestoacciones en los aspectos funcionales y bsicos, algunos de la accin denominada combinadores. Estos combinadores pueden procesar

la informacin al alcance, pero de aplazar la discusin de los enlaces hasta que ms adelante en este captulo.Combinadores Accin tener la firma combinador: Accin, Accin-> Accin y se escriben normalmente usando la notacin infijo. En este punto nos preocupa slo con control de flujo y el procesamiento de los transitorios. El combinador bsicos "A1 y A2" realiza la accin y luego lleva a cabo la segunda. Se ilustra el flujo de control entre las dos acciones por una lnea discontinua en un diagrama que indica que la primera accin debe terminar normalmente (completa) antes de la segunda accin se puede realizar

Ambas acciones se pueden utilizar los transentes pasar a la accin combinada. los transitorios dada por cada accin se concatenan y se da por la combinacin de la accin. Nos muestran la concatenacin de los transitorios (tuplas) por unirse a los datos lneas de flujo. El transitorio de la primera accin que precede a la segunda en la concatenacin, la cual se ordena de izquierda a derecha. Aadiendo el procesamiento de los transentes a "A1 y A2" da el siguiente diagrama:

La accin bsica combinador "A1 y A2" permite el entrelazado de los resultados de las dos acciones. El siguiente diagrama muestra ninguna dependencia de control entre las dosacciones, lo que sugiere que se puede realizar subsidiariamente. Ambas medidas se financiarn con los transentes pasar a la accin combinada. los transitorios dada por cada accin se concatenan y se da por la combinacin de la accin.

La accin funcional combinador "A1 despus A2" lleva a cabo la primera accin con los transitorios dados a la accin combinada y luego realiza la segunda accin con los transitorios dada por la primera accin. Los transitorios dado por la accin combinada son las dadas por la segunda accin. La lnea punteada muestra la dependencia de control.

Para cada uno de estos combinadores de accin, si una de las acciones se obtiene el valor nada, el resultado de la accin mixta no es nada. Nos dicen que estos combinadores son estrictas en el valor de nada. El lenguaje de la muestra en la siguiente seccin, es decir, el lenguaje calculador de la seccin 9.2 se utiliza una accin funcional primitiva dar: rendidor ->Accin, que se ha mencionado anteriormente, "dar a Y", donde Y es una alta productora (un trmino que se evala a un valor de datos) proporciona el valor calculado de Y como transitoria.

El rendidor "el S dado", donde S es un tipo de datos, recupera y comprobaciones de tipo el dato en el transitorio dado. El rendidor toma un parmetro que es una especie para documentar el tipo de dato en el transitorio. El rendidor "lo dado S # n" recupera y el tipo de cheques el dato n en el dado tupla transitoria. Por ejemplo, la accin mixta

siempre con la tupla (3,5) como una transitoria, da la tupla (8, false) como su resultado. La operacin se sirve de la igualdad para los nmeros enteros.

La tupla (3,3) en una transitoria se traducir en la tupla (6, es cierto) como el transitorias establecidas en la presente accin mixta FACE IMPERATIVA Acciones y rendidores en el acuerdo faceta imprescindible con el almacenamiento, la asignacin de posiciones de memoria, la actualizacin de los contenidos de los lugares, y los valores de ir a buscar de la memoria. Todas las acciones de trabajo en un almacn comn, compuesto por un nmero ilimitado de nmero de clulas, que son los datos de la celda de tipo. Inicialmente, todas las clulas se consideran sin usar. Cuando un objeto de tipo celular se asigna, cambia de ser acostumbrados a que contiene un valor especial llamado indefinido. Los valores que pueden ser almacenados en la memoria pertenece a una especie llamada almacenable, correspondiente a la almacenables los valores de la semntica denotacional. As, cuando se especifica un imperativo lenguaje de programacin, es necesario especificar el tipo almacenable. Cualquier accin puede alteran el estado de una clula, y esta modificacin se mantiene en efecto hasta que algn otra accin que modifica la celda de nuevo mediante el almacenamiento de un valor diferente en la misma o liberando las clulas. Por lo tanto, pensar en los datos almacenados en las clulas lo ms estable de la informacin. Clulas forman un tipo de datos que se puede dejar sin especificar. Este tipo de datos abstracto slo requiere que las clulas se diferencian y que tenemos un nmero ilimitado de Algunos de ellos, aunque slo un nmero finito estarn en uso en cualquiera tiempo. Podemos ver el almacenamiento actual como una asignacin limitada de las clulas a la sort (almacenable | indefinido)

Dos acciones imperativas primitivos asignar y actualizar las celdas de almacenamiento. asignar una celda Buscar una celda sin usar, almacenar el valor definido en l, y darle el objeto ( de clase) Cell como el transitorio de la accin. El algoritmo de asignacin no

es importante, siempre y cuando siempre produce un celular sin usar cuando se realiza. En [Mosses92] la operacin de asignar un accin hbrido definido en trminos de las acciones primitivas de la imprescindible y aspectos funcionales. Lo consideramos como una accin primitiva para simplificar la discusin. Las reglas de precedencia para la semntica de accin nos permiten usar el sistema de varias palabras nombres sin ningn tipo de confusin. La expresin "asignar una celda" representauna operacin sin argumentos. Una accin primitiva define la modificacin de una memoriacelular. tienda de Y1 en el ao 2 Actualizacin de la clula producido por Y2 para contener el almacenable producidas por Y1. La faceta imprescindible no tiene combinadores accin especial, pero cualquier accin el potencial de alterar de almacenamiento. En la combinacin "A1 y A2", cualquier cambios en el almacenamiento de A1 preceden a las realizadas por A2. Por el contrario, si ambos A1 y A2 en "A1 y A2" memoria modificar, los resultados son impredecibles, porque de la intercalacin posible. El rendidor "el S almacenada en Y" da el dato almacenado en el celular Y dado mediante la evaluacin, siempre que el valor dado es un dato de la clase S. De lo contrario, el rendidor no da nada. Supongamos que dos lugares, denotado por CELL1 y cell2, se han asignado y en la actualidad contienen el valor undefined. Tambin se supone que la celda de al ladose asignarn es cell3. La figura 13.3 muestra instantneas del almacenamiento actual como un accin compuesta se lleva a cabo. La subaccin primero en el combinador luego da cell3 como transitoria a la subaccin segundo que almacena un valor all. Observar cmo se determina el sangrado la agrupacin de las acciones.