Please enable JavaScript.
Coggle requires JavaScript to display documents.
Tipos de Semântica das LPs - Coggle Diagram
Tipos de Semântica das LPs
Semântica operacional
Descrever o significado de uma sentença
ou programa pela especificação dos efeitos de rodá-lo em uma máquina. Uma descrição de Semântica Operacional óbvia é dada pela execução de uma versão compilada do programa em um computador
Existem diferentes níveis de usos para a semântica operacional.
Semântica Operacional Natural
No mais alto, o interesse é no resultado final da execução de um programa completo.
Semântica Operacional Estrutural
No nível mais baixo, usada para determinar o significado preciso de um programa por meio do exame da sequência completa de estados que ocorrem quando um programa é executado
Cada construção da linguagem intermediária deve ter um significado óbvio e não ambíguo. As linguagens de máquina são de muito baixo nível para serem facilmente entendidas e outra linguagem de alto nível não é adequada
O conceito é bastante usado em manuais e livros da linguagem de programação.
Fornece um meio efetivo de descrever semântica para usuários e implementadores de linguagens, desde que as descrições se mantenham simples e informais
Semântica Denotacional
O método mais rigoroso e mais conhecido para
a descrição do significado de programas. Baseada completamente na teoria de funções recursivas. É chamado de denotacional porque o objeto denotam o significado de suas entidades sintáticas correspondentes.
O processo de construção de uma especificação de semântica denotacional para uma linguagem de programação requer que alguém defina, para cada entidade da linguagem, tanto um objeto matemático quanto uma função que mapeie as instâncias dessa entidade de linguagem para instâncias do objeto matemático
Um exemplo de Semântica Denotacional, A função semântica, chamada Mbin, mapeia os objetos sintáticos para objetos em N, o conjunto de números decimais não negativos.
O mapeamento para essa regra é:
Mdec('0') = 0, Mdec('1') = 1, Mdec('2') = 2, . . ., Mdec('9') = 9 Mdec(<dec_num> '0') = 10
Mdec(<dec_num>) Mdec(<dec_num> '1') = 10
Mdec(<dec_num>) + 1 . . . Mdec(<dec_num> '9') = 10 * Mdec(<dec_num>) + 9
Semântica Axiomática
Baseada em lógicas matemáticas, é a abordagem mais abstrata. Ela especifica o que pode ser provado sobre o programa
Não existe um modelo de estado de uma máquina ou programa nem um modelo de mudanças de estado que ocorrem quando o programa é executado.
Asserções
As expressões lógicas usadas na semântica axiomática são chamadas de Asserções
Uma asserção que precede imediatamente uma sentença de programa descreve as restrições nas variáveis do programa naquele ponto.
Comparação e relação com Linguagens de Programação
Operacional
Muito boa para ser utilizada em linguagens de programação baixo nível, ruim em alto nível.
depende de linguagens de programação de níveis mais baixos, não de matemática.
Denotacional
Uma mão na roda para projetos de linguagem. Muito complexo nas descrições denotacionais para os usuários de linguagens.
Pode ser usado para determinar o significado de programas completo
Axiomática
ferramenta poderosa para a pesquisa na
área de prova de correção de programas. Mas é muito complexo que necessita de muitas asserções e regras de inferência.
Fornece um framework excelente no qual se pensar acerca de programas.