Buscar

AULA 06 SintaxeSemantica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 06
Paradigmas de Linguagem de 
Programação
Sintaxe e Semântica
Tópicos da Aula
• Descrevendo Sintaxe e Semântica
▫ Gramática de Atributos
▫ Semântica Operacional
Gramáticas de Atributos
• É um dispositivo usado para descrever mais sobre a 
estrutura de uma linguagem de programação do que 
poderia ser descrito usando uma gramática livre de 
contexto
• É uma extensão de uma gramática livre de contexto
Gramática de Atributos
• Problema semântico: compatibilidade de tipos
▫ Java: um valor de ponto-flutuante não pode ser atribuído a 
uma variável inteira;
▫ O oposto é legal;
▫ É possível especificar isto com BNF, mas são necessários muitos 
não-terminais;
▫ O tamanho da gramática determina o tamanho do analisador 
(parser).
Gramática de Atributos
• Problemas semânticos: todas as variáveis devem ser declaradas 
antes de serem referenciadas.
▫ Não pode ser especificado com BNF.
• Outro exemplo: em Ada, se o end de um subprograma for seguido 
de um nome, o nome deve casar com o nome do subprograma
▫ Não pode ser especificado com BNF.
Semântica Estática X Dinâmica
As regras semânticas podem ser classificadas em estáticas 
ou dinâmicas dependendo do momento em que são 
checadas (compilação ou em tempo de execução).
Semântica Estática
• Descreve as características de uma programa válido
▫ Tem a ver com a forma (sintaxe) correta do programa
• A maioria das restrições de tipos são definidas utilizando 
semântica estática
• Estática porque é feita em tempo de compilação
• Semântica porque é extra BNF
• É difícil, senão impossível descrever semântica estática com BNF
Semântica Estática
• Gramáticas Livres do Contexto (GLC) não são capazes de descrever 
toda a sintaxe das linguagens de programação;
• Gramáticas de Atributos (GA) são adições às GLCs que carregam 
informações semânticas através das árvores sintáticas;
• Importância das Gramáticas de Atributos:
▫ Especifica semântica Estática;
▫ Projeto de compiladores (checagem da semântica estática). 
 Exemplo: checagem de tipo.
Gramáticas de atributos: definição
•Def: Uma gramática de atributo é uma gramática com os 
seguintes recursos adicionais:
– Associado a cada símbolo X da gramática está um conjunto de 
atributos A (X)
– Associado a cada regra gramatical está um conjunto de 
funções semânticas e um conjunto possivelmente vazio de 
funções de predicado sobre os atributos dos símbolos na regra 
gramatical
Gramáticas de atributos: um exemplo
• Regras de tipo de uma atribuição simples
• Sintaxe
<assign> -> <var> = <expr>
<expr> -> <var> + <var> | <var>
<var> A | B | C
• actual_type:
▫ Usado para armazenar o tipo atual de uma variável ou expressão (inteiro ou real)
• expected_type:
▫ Usado para armazenar o tipo, inteiro ou real, esperado para a expressão, conforme
determinado pelo tipo da variável no lado esquerdo da sentença de atribuição
Gramáticas de atributos: um exemplo
Gramáticas de atributos: um exemplo
Gramáticas de atributos: um exemplo
Gramáticas de atributos: um exemplo
Gramáticas de atributos: um exemplo
exp  exp + termo | exp – termo | termo
termo  termo * fator | termo div fator | fator
fator  (exp) | num
Gramáticas de atributos: um exemplo
Exercício: escreva a gramática de atributos para a gramática abaixo
número  número dígito | dígito
dígito  0 | 1 | 2 | 3| 4 | 5 | 6 | 7 | 8 | 9
Gramáticas de atributos: um exemplo
Exercício: escreva a gramática de atributos para a gramática abaixo
número  número dígito | dígito
dígito  0 | 1 | 2 | 3| 4 | 5 | 6 | 7 | 8 | 9
Gramáticas de atributos: um exemplo
Exercício: escreva a gramática de atributos para a gramática abaixo
decl  tipo var_lista
tipo  int | float
var_lista  id, var_lista | id
Semânticas
• Não há nenhuma notação única amplamente aceitável ou formalismo 
para descrever semântica
• Diversas necessidades de uma metodologia e notação para 
a semântica
– Programadores precisam saber o que a sentença de uma linguagem
significa
– Desenvolvedores de compiladores devem saber exatamente o que as 
construções da linguagem significam
– Geradores de compilação seriam possíveis
– Projetistas poderiam detectar ambiguidades e inconsistências
Semântica operacional
• Semântica Operacional
– Descrever o significado de uma sentença ou programa pela 
especificação dos efeitos de rodá-lo em uma máquina. 
– A mudança no estado de máquina (memória, registros, etc.) define o 
significado da sentença
• Para usar semântica operacional em uma linguagem de alto nível, é 
necessária uma máquina virtual
Semântica operacional
• Um interpretador puro de hardware seria muito caro
• Um interpretador puro de software também tem problemas
– As características detalhadas de um computador em particular 
deixaria ações difíceis de entender
– Uma definição semântica seria dependente da máquina
Semântica operacional
• Uma melhor alternativa: uma completa simulação
• O processo:
– Construir um interpretador (transforma código de origem em código de 
máquina de um computador idealizado)
– Construir um simulador para o computador idealizado
Semânticas operacionais
• Usos de semânticas operacionais:
– Manuais de linguagem e livros-texto de programação
– Ensino de linguagens de programação
• Dois níveis diferentes de uso de uma semântica operacional:
– Semântica operacional natural: interesse no resultado final da 
execução de um programa completo
– Semântica operacional estrutural: exame da sequência completa de 
mudanças de estado que ocorrem na execução de um programa
• Avaliação
– Boa se usada informalmente
– Extremamente complexa se usada formalmente
Semânticas operacionais
• Exemplo: semántica do loop for na linguagem C
Dúvidas?

Outros materiais