• Nenhum resultado encontrado

FACULDADE LEÃO SAMPAIO

N/A
N/A
Protected

Academic year: 2022

Share "FACULDADE LEÃO SAMPAIO"

Copied!
16
0
0

Texto

(1)

Paradigmas de Programação

Curso de Análise e Desenvolvimento de Sistemas

Turma: 309-5 Semestre - 2014.2

FACULDADE LEÃO SAMPAIO

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 1

PARADIGMAS DE PROGRAMAÇÃO

CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Analisador semântico

(2)

Análise Semântica

Analisador Léxico Analisador

Sintático Analisador Semântico Gerador de Código

Intermediário Otimização de

Código Gerador de Código

Scanner do código-fonte em tokens.

Agrupamento dos tokens (símbolos) do programa em uma arvore gramatical

Identifica operandos e operadores. Verifica se cada

operador recebe os operandos dos tipos que são permitidos .

Gera um código mais fácil de ser traduzido.

Melhora o código intermediário para gerar um código de maquina mais rápido.

Instruções de máquinas são traduzidas em uma sequência de instruções de máquina.

(Front-end)(Back-end)

Análise Semântica

Analisador Léxico Analisador

Sintático Analisador Semântico Gerador de Código

Intermediário Otimização de

Código Gerador de Código Código Fonte 

Código Alvo Tabela de

Símbolos

(3)

Análise Semântica

O analisador Semântico utiliza a árvore sintática para:

Operandos e operadores das expressões

Reconhecer erros semânticos

Fazer verificação de compatibilidade de tipos

Analisar o escopo das variáveis

Fazer verificações de correspondência entre parâmetros atuais e formais.

Análise Semântica

Exemplo:

Para o comando de atribuição SOMA := SOMA + 35; é necessário fazer a seguinte análise:

O identificador SOMA foi declarado? Caso negativo, erro semântico.

O identificador SOMA é uma variável? Caso negativo, erro semântico.

Qual o escopo da declaração da variável SOMA? Local ou Global?

Qual o tipo da variável SOMA? O valor atribuído do lado direito do comando de atribuição é compatível?

(4)

Análise Semântica

A Semântica trata os aspectos sensíveis ao contexto da linguagem de programação.

Exemplo: NÃO é possível representar em uma gramatica livre de contexto uma regra como “Todo identificados deve ser declarado antes de ser usado”, essa verificação cabe ao analisador semântico.

Entretanto, uma gramatica livre de contexto pode ser usada como guia na tradução de programas

Técnica denominada: Tradução Dirigida pela Sintaxe

Análise Semântica

Função: verificação do uso adequado

Análise contextual: declarações prévias de variáveis, procedimentos, etc.

Checagem de tipos

Coisas que vão além do domínio da sintaxe

• Sensitividade ao contexto!

Tipos de análise semântica

Estática, em tempo de compilação: linguagens tipadas, que exigem declarações

• C, Pascal, etc.

Dinâmica, em tempo de execução: linguagens em que as variáveis são determinadas pelo contexto de uso

• LISP, PROLOG

(5)

Análise Semântica

Devido às variações de especificação semântica das linguagens de programação, a análise semântica

Não é tão bem formalizada

Não existe um método ou modelo padrão de representação do conhecimento

Não existe um mapeamento claro da representação para o algoritmo correspondente

Análise é artesanal, dependente da linguagem de programação

Análise Semântica

• Semântica dirigida pela sintaxe

Conteúdo semântico fortemente relacionado à sintaxe do programa

Maioria das linguagens de programação modernas

• Em geral, a semântica de uma linguagem de programação não é especificada

O projetista do compilador tem que analisar e extrair a

semântica

(6)

Análise Semântica

• Formalização e implementação

Assim como a sintaxe, a semântica precisa ser formalizada/descrita antes de ser implementada

• Sintaxe: por exemplo, BNFprocedimentos recursivos

Como?

Gramática de atributos é o formalismo de descrição da semântica comumente utilizado

Análise Semântica

Gramática de atributos

Método usualmente utilizado

Conjunto de atributos e regras semânticas para uma gramática

Cada regra sintática/gramatical pode ter regras semânticas associadas

Atributos associados aos símbolos gramaticais (seja terminais ou não-terminais)

Por exemplo considere x um símbolos gramatical, onde os atributos valor e escopo serão associados a ele.

x.valor, x.escopo

Regras semânticas que manipulam os atributos

Por exemplo, regra para somar os atributos valores de duas variáveis

x:=a+b, cuja regra é x.valor:=a.valor+b.valor

(7)

Análise Semântica

• Gramática de atributos

• Atributos podem ser fixados durante a compilação ou a execução de um programa

A associação de um valor a um atributo é chamada

“amarração” (ou vinculação) do atributo

Acontece em “tempo de amarração”

Em tempo de compilação, tem-se a amarração estática

Em tempo de execução, tem-se a amarração dinâmica

Gramática de atributos

Exemplo:

expexp + termo | exp - termo | termo

termotermo * fator | termo div fator | fator

fator( exp ) | num

(8)

Gramática de atributos

Exemplo:

De uma gramática de atributos para a gramática abaixo

númeronúmero dígito | dígito

dígito0|1|2|3|4|5|6|7|8|9

Gramática de atributos

Exemplo:

De uma gramática de atributos para a gramática abaixo

númeronúmero dígito | dígito

dígito0|1|2|3|4|5|6|7|8|9

(9)

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos, para o valor 345

númeronúmero dígito | dígito dígito0|1|2|3|4|5|6|7|8|9

BNF

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos, para o valor 345

númeronúmero dígito | dígito dígito0|1|2|3|4|5|6|7|8|9

BNF

númeronúmero dígito

número dígito

número dígito dígito

dígito dígito dígito

3 dígito dígito

(10)

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos, para o valor 345

númeronúmero dígito | dígito dígito0|1|2|3|4|5|6|7|8|9

BNF

númeronúmero dígito

número dígito

número dígito dígito

dígito dígito dígito

3 dígito dígito

3 4 dígito

3 4 5

Árvore

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos, para o valor 345

númeronúmero dígito | dígito dígito0|1|2|3|4|5|6|7|8|9

BNF

númeronúmero dígito

número dígito

número dígito dígito

dígito dígito dígito

3 dígito dígito

3 4 dígito

3 4 5

Árvore

(11)

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos

Ex.: 345

número

número dígito

número dígito 5

dígito 4

3

Árvore

Gramática de atributos

(12)

Gramática de atributos

Exemplo: Árvore sintática com visualização da computação de atributos

Ex.: 345

número (val=34*10+5=345)

número dígito

(val=3*10+4=34) (val=5)

número dígito 5

(val=3) (val=4)

dígito 4

(val=3) 3

Árvore

Gramática de atributos

Atenção

Nem todo símbolo gramatical tem atributos

Pode haver manipulação de mais de um atributo em uma mesma regra e para um mesmo símbolo

Pode não haver regras semânticas para uma regra sintática

Em geral, a gramática de atributos de uma gramática pode especificar

Comportamento semântico das operações

Checagem de tipos

Manipulação de erros

Tradução do programa

(13)

Gramática de atributos

Gramática para geração de números binários ou decimais, indicados pelos sufixos b ou d, respectivamente BNF

número num sufixo sufixo b | d

num num dígito | dígito dígito 0|1|2|3|4|5|6|7|8|9 Exemplos:

10b 02b

Árvore para 10b número num sufixo num digito b dígito 0

1

Gramática de atributos

Gramática para geração de números binários ou decimais, indicados pelos sufixos b ou d, respectivamente BNF

número num sufixo sufixo b | d

num num dígito | dígito dígito 0|1|2|3|4|5|6|7|8|9 Exemplos:

10b

Árvore para 02b número num sufixo num digito b dígito 2

0

(14)

Gramática de atributos

Gramática para geração de números binários ou decimais, indicados pelos sufixos b ou d, respectivamente BNF

número num sufixo sufixo b | d

num num dígito | dígito dígito 0|1|2|3|4|5|6|7|8|9 Exemplos:

10b 02b

Árvore para 02b número num sufixo num digito b dígito 2

0

A sintaxe permitiria o número 02b, mas a semântica não

Gramática de atributos

(15)

Gramática de atributos

Para 10b

BNF

número num sufixo sufixo b | d

num num dígito | dígito dígito 0|1|2|3|4|5|6|7|8|9

Para 02b

BNF

número num sufixo sufixo b | d

num num dígito | dígito dígito 0|1|2|3|4|5|6|7|8|9 Alguns valores sobem (val) Outros descem (base)

Gramática de atributos

(16)

Exercício Rápido

1º Dada a BNF abaixo, apresente uma gramática de atributos.

2º Aplique a gramática de atributos para os seguintes exemplos:

a) 9A8H b) 678O c) 24O

BNF

número num sufixo sufixo H | O

num num dígito | dígito dígito

0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

FOOTSWITCH: Conecte o pedal footswitch Bertoloni que acompanha o equipamento para fazer a transição remota entre o canal limpo (CLEAN CHANNEL) ou canal distorcido

Nenhum reembolso ou devolução do valor da inscrição será feito em função de alguma alteração, inclusive o cancelamento da prova por motivo de força maior, sem a

Por outro lado, Modelos Ocultos de Markov s˜ao usados na modelagem de processos Marko- vianos que geram observ´aveis de forma indireta, em func¸˜ao das transic¸˜oes entre os estados

X5 = Absoluto COM KIMONO Adulto Masculino Preta 2º LUGAR LUIZ GUSTAVO CARBONE PSLPB CICERO COSTHA. X5 = Absoluto COM KIMONO Adulto Masculino Preta 1º LUGAR HELTON JOSé

Nesse caso, o APS pode ser aplicado à matriz de absorbâncias das misturas de treinamento (Xcal) para determinação das variáveis espectrais mais informativas.. Neste exemplo,

pela Colonia Portuguesa. O regime legal do nosso país preceitua que o Estado tem o domínio e controle da exploração dos recursos minerais, tendo a União total competência

• Uma gramática de atributos  é uma definição dirigida à sintaxe em que as