semântica de ação - Action semantics

Semântica de ação é um quadro para a especificação formal de semântica de linguagens de programação inventada por David Watt e Peter D. Musgos na década de 1990. É uma mistura de denotational , operacionais e semântica algébricas .

Semântica ação pretende ser pragmático. Descrições de ação-Semântica (ASDs) são projetados para escalar para lidar com linguagens de programação realistas. Isto é ajudado pela extensibilidade e modifiability de ASDs. Isso ajuda a garantir que as extensões e as mudanças não exigem muitas mudanças na descrição. Isto está em contraste com o caso típico quando se estende semântica denotational ou operacionais, que podem exigir a reformulação de toda a descrição.

O quadro de acção Semântica foi originalmente desenvolvido na Universidade de Aarhus e da Universidade de Glasgow . Grupos e indivíduos em todo o mundo, desde então, contribuiu ainda mais para a abordagem.

entidades semânticas

Uma parte importante da semântica de ação que lhe dá uma modularidade não visto em semântica da linguagem de programação anteriores é o uso de entidades semânticas de primeira ordem. De primeira ordem refere-se à forma como, ao contrário de semântica denotacional, onde uma função semântica podem ser aplicadas para outra função semântica, na semântica de ação, uma entidade semântica não pode ser aplicada a uma outra entidade semântica de seu tipo. Além disso, as entidades semânticas utilizadas pela semântica de ação ampliar a capacidade da estrutura para descrever construções de uma linguagem de programação, servindo para designar tanto o comportamento do programa, que é independente de qualquer aplicação em particular e a maneira em que partes de um programa influenciar o desempenho geral do todo. A notação ação apropriadamente chamado é empregado para expressar os três tipos de entidades semânticas encontradas na semântica de ação: ações , dados e yielders . A entidade semântica central neste quadro são as ações, com dados e yielders ocupando papéis complementares. Mais especificamente, as acções são os mecanismos através dos quais yielders e os dados são processados. Uma acção, o que pode ocorrer dentro de uma outra acção, é uma representação passo-a-passo de comportamento do programa, em que cada passo acede à informação actual, muda a informação actual, ou faz ambos. Yielders aparecer dentro ações e só o acesso a informação atual. A entidade safra é capaz de ser avaliado, e quando é, o produto é uma entidade de referência.

entidades de ação

Entidades de ação pode representar diretamente a semântica dos programas descrevendo possíveis comportamentos de programa ou representar, de uma forma mais indireta, o impacto que as peças individuais de um programa, como declarações ou expressões, têm sobre a semântica do programa como um todo. Eles modelar o comportamento computacional, indicando mudanças no estado através de sua geração de novos valores de valores passados. Especificamente, uma ação aceita dados passados para ele via as informações atuais - os dados transitórios que lhe são atribuídas, as ligações recebidas por ele, eo estado atual de armazenamento - e, com isso, dá novos dados transitórios, cria novas ligações, atualiza o estado de armazenamento, ou qualquer combinação destes. Uma entidade ação pode culminar de quatro maneiras possíveis. Pode: completa (normalmente encerrar), escapar (encerrar em uma excepção), falhar (alternativa é descartado), ou divergentes (não terminar).

Há quatro categorias de informações que são processadas pelo desempenho ação. Informações transiente corresponde aos resultados intermédios e é acessível para uso imediato pela acção. Os dados que compreende informação transitório engloba os valores dados pelas expressões. Se esses valores não forem utilizados imediatamente, eles estão perdidos. Informações escopo corresponde a tabelas de símbolos e pode ser referenciado a partir de qualquer lugar dentro da ação e seus sub-acções. Também é possível que essa informação ser escondido dentro de uma sub-acção, através da criação de um espaço interior, caso em que seria apenas localmente acessíveis dentro desse escopo, para que sub-acção. Informações estável corresponde a valores atribuídos às variáveis e podem ser modificados no desempenho ação. Por causa alterações para o armazenamento durante a realização de uma acção são persistentes, apenas ações explícitas podem causar essas modificações. De acordo com isto, a informação está disponível estável até que seja explicitamente destruído. E, ao contrário de informações de escopo, não pode ser escondido. Informação permanente corresponde aos dados trocados entre as acções e pode ser estendido, mas não modificado. Informações transitória só é produzido quando uma ação completa ou escapa, e escopo informação é produzida somente quando uma ação completa. A modificação de informações estável e a extensão de informação permanente deve ter lugar durante o desempenho ação.

Uma entidade ação tem cinco facetas diferentes, um para processamento que não depende de informações, e quatro para o processamento de cada um dos quatro tipos diferentes de informações. O básico faceta, um exemplo de que seria fluxos de controle, não está vinculado a qualquer tipo de informação. O funcional faceta lida com o processamento de informações transitória e é caracterizada por ações dar e aceitar dados. O declarativa faceta lida com o processamento da informação no escopo e é caracterizado pelas acções que criam e recebem ligações. O imperativo faceta lida com o processamento de informações estável e é caracterizado pelas acções alocação e liberação de células de armazenamento, e buscar e modificar os dados armazenados nos mesmos. Os comunicativas ofertas faceta com o processamento de informações permanente e é caracterizada por ações envio e recebimento de mensagens e “oferta [ndo] contratos a agentes.” Existem dois tipos diferentes de ações em termos de seu efeito sobre as informações em cada faceta. Ações primitivas afetam apenas as informações em uma faceta. Ação combinators permitir ações que envolvem múltiplas facetas, que regem como controle e fluxos de informação para cada faceta envolvida em uma ação combinada. Em acções combinando, acção combinadores regulador a sequenciação de desempenhos sub-acção e os fluxos de entrada e de saída de dados para cada sub-acção.

entidades de dados

Entidades de dados são os itens que compõem a informação processada em entidades de ação. Os dados são organizados dentro de estruturas conhecidas como os tipos. Tipos são conjuntos de objetos matemáticos, incluem as operações que podem ser executadas nesses objetos, e são definidos de acordo com critérios algébricas. Estas estruturas permitem o acesso a cada entidade individual. Exemplos de entidades de dados pode incluir elementos concretos, como mapas, listas, conjuntos, cordas, caracteres, números e valores de verdade, os elementos mais abstratos utilizadas unicamente com o propósito de alguma operação computacional, ou seja, o acesso aos dados, como agentes, células correspondentes a posições de memória , e fichas, ou elementos como os contratos e mensagens que são um compósito dos componentes de dados. Uma abstração é uma entidade de dados que encapsula uma entidade ação, no caso de decretar que os resultados de abstração na ação que está sendo executada. Esta é a técnica pela qual semântica acção representa o declarando e invocação de subprogramas.

entidades safra

entidades safra consistem em quantidades unevaluated de dados. Os valores dessas quantidades são contingentes na informação atual e estado de computação. Yielders recorrer a dados transitórios, ligações e armazenamento para selecionar as informações a serem processadas por ações. É durante o desempenho ação que yielders são avaliadas e seus resultados de avaliação em entidades de dados. Embora a informação atual pode influenciar os dados produzidos pela avaliação de uma entidade safra, a avaliação não pode influenciar a informação atual. Se as operações de dados são empregados em entidades yielder, entidades yielder compostos podem ser formados como um resultado.

notação ação

palavras inglesas regulares servem como símbolos de notação ação. notação de acção foi concebido para simular a linguagem natural, que é ilustrada nas partes do discurso usado para denotar entidades semânticas. entidades de ação são representados por frases e dados verbais e entidades safra por sintagmas nominais. O resultado desta escolha de símbolos é uma estrutura que é altamente legível e não menos formal do que outras estruturas, uma vez que continua a ser definido com precisão.

Outros aspectos-chave

semântica de ação incorpora um nível de abstração que aumenta a sua inteligibilidade. As especificidades do controlo e os fluxos de dados que uma acção envolve implicitamente são incorporados no processo, em vez de ser explicitamente expresso como os detalhes de funções semânticas estão em semântica denotational. Quando uma ação é executada, mais o processamento de informações e manipulação ocorre automaticamente.

Frases de programa são mapeadas para ações na construção de uma definição do significado de uma linguagem de programação na semântica de ação. A execução de uma frase de programação corresponde ao desempenho da ação à qual ele mapeia.

A especificação da linguagem de programação gerada a partir da aplicação de semântica de acção pode ser dividido em um nível inferior ( microsemantics ) e um nível superior ( macrosemantics ). O nível mais baixo consiste em definir o significado da notação ação, enquanto o nível superior consiste em definir o significado de uma linguagem de programação, usando a notação de ação para fazê-lo.

Referências