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

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

Type checking
Análise Semântica
● Verifica se o programa "faz sentido"
○ Variáveis/funções são definidas corretamente
○ Expressões respeitam o sistema de tipos
○ etc. etc.
● Última chance para o compilador descartar 
programas inválidos
Type Checking
//using java semantics
int a = 10
float b = 20.5;
float c = a + b;
int d = a + b;
Type Checking
//using java semantics
int a = 10
float b = 20.5;
//int is promoted to a float
float c = a + b; //OK! 
int d = a + b;
Type Checking
//using java semantics
int a = 10
float b = 20.5;
float c = a + b; //OK!
//float cannot be "downgraded" to 
//int without losing data!
int d = a + b; //ERROR!
Exercícios
● O terceiro exercício usará a gramática neste 
link como base
● A gramática descreve uma linguagem 
bastante simples similar à C.
int g = 9; // a global variable
int fact(int x) { // factorial function
 if x==0 then return 1;
 return x * fact(x-1);
}
Exercício 1
● Adicione suporte na gramática para:
○ Tipos booleanos
○ Tipos String
○ Arrays 
○ Operadores de comparação (<, >, !=, <=, >=)
○ Expressões usando os tipos acima (&&, ||, +)
● Ex:
boolean a = true; 
int[] b = new int[10];
String foo(boolean x, String b) { 
 if x==0 || x then return "miss";
 return "result: " + b + x; }
Exercício 2
● Implemente um type-checker para a 
linguagem definida pela gramática extendida 
no exercício anterior
● Ao detectar uma violação, o type-checker 
deve imprimir uma mensagem de erro 
informando o local da ocorrência 
(linha/coluna), e continuar a análise (use o 
tipo da variável declarada caso necessário). 
Exercício 2 - ex:
> int x = 10;
> boolean y = (10 < x) + x;
> int z = false;
$ error at line 2, pos 13: operator '+' is 
undefined for types: boolean, int.
$ error at line 3, pos 8: cannot convert from 
boolean to int
Exercício 2 - obs:
● Use as mesmas regras semânticas de Java:
○ int + float => float
○ String + int => String
○ etc. (procurem o resto)
Exercício - entrega:
● Enviem um email para mab@cin
○ assunto = "[if688] atividade da aula prática 3"
○ até a próxima terça (16/07)
● O anexo deve conter o projeto do eclipse 
com:
○ gramática utilizada na geração do 
visitor/parser/lexer
○ um arquivo README na raiz contendo uma breve 
explicação do que foi feito e como rodar o projeto
● Grupos de até 4 pessoas

Mais conteúdos dessa disciplina