Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1. Analisador Semântico
É a terceira fase da etapa de compilação, é necessária para validar uma série de
regras que não podem ser identificadas nas etapas anteriores, ou seja, é responsável por
identificar erros com o significado das das instruções.
O objetivo da análise semântica é, assim, criar, a partir de um texto-fonte, uma
interpretação expressa em alguma notação adequada - geralmente uma linguagem
intermediária do compilador. Para fazer a análise, utilizamos a tabela de símbolos e a árvore
sintática.
São as tarefas básicas do analisador semântico:
● verificação de tipos;
● verificação do fluxo de controle;
● verificação da unicidade da declaração de variáveis.
2. Analisador de contexto
É a parte do analisador semântico que verifica o escopo das variáveis,
procedimentos entre outros, por exemplo:
● Quando variável já está declarada e você tenta redeclara-la;
● Quando um tipo associado a uma variável não estiver de acordo;
● Quando se tenta acessar uma variável fora do seu escopo
3. Erro semântico
Erros de semântica são erros com o significado do código, são códigos
tecnicamente corretos em sintaxe. Já que os compiladores sempre apontam os erros, erros
de semântica podem ser encontrados e diagnosticados, na maioria das vezes, sem muita
dor de cabeça.
Erros semânticos têm origem de regras dependentes da linguagem de programação.
Os principais erros semânticos são listados abaixo:
3.1. Escopo dos identificadores
O compilador deve garantir que variáveis e funções estejam declaradas em locais
que podem ser acessados onde esses identificadores estão sendo utilizados.
https://pt.wikipedia.org/wiki/compilador
3.2. Compatibilidade de tipos
Verificar se os tipos de dados declarados nas variáveis e funções estão sendo
utilizados e atribuídos corretamente. Pode ser verificado em tempo de compilação
(checagem estática), ou em tempo de execução (checagem dinâmica).
3.3. Detectar unicidade de nomes dos identificadores
Detecta situações tais como duplicação em declarações de variáveis, de
componentes de estruturas e em rótulos do programa, isso implica em:
● diferentes identificadores podem ter o mesmo nome;
● o mesmo identificadores pode estar em um escopo diferente;
● sobrecarga de métodos deve gerar novas entradas na tabela de símbolos
3.4. Detectar o uso correto de comandos de controle de fluxo
Comandos como continue e break executam saltos na execução de códigos, esse
comandos devem ser utilizados em instruções que permitem os saltos.
4. Aviso de possíveis erro (warnings)
Warnings são erros menos graves ou simplesmente a suspeita de erros, é tarefa do
analisador semântico identificar esses erros.
Exemplos de warnings no nosso compilador são:
● Quando declara uma variável mas não inicializa a mesma;
● Variáveis declaradas, inicializadas e não utilizadas;
● Expressões condicionais onde o resultado pode ser determinado pelo compilador
como sendo true ou false, e usadas em estruturas de laço ou condicionais;
● Declaração de variáveis onde o uso ocorre somente dentro de uma estrutura
condicional como if ou while;
● Inicialização de variáveis dentro de uma estrutura condicional ou repetição.

Mais conteúdos dessa disciplina