Leia com atenção as instruções abaixo.
Formato da Entrega:
-
Arquivo no formato PDF.
-
Deve ser enviado através do Slack, no chat privado com o professor. Qualquer outro envio será desconsiderado.
-
O arquivo deve ser orientação formato retrato, não paisagem.
-
Você pode resolver no caderno e digitalizar usando o Google Drive ou colocar em um documento do Word ou LibreOffice, gerando o PDF. O tamanho do arquivo deve ficar abaixo de 10 MB.
-
No início do arquivo, deixe bem claro o título com: nome da atividade, seu nome e sua matrícula.
Valor: 2,5 pontos na 4ª Nota.
Data da Entrega:20/10/2020
Questão 01 - 2,5 Pontos - exercício 6.21, página 345
Atenção: esta atividade ainda é do tema das aulas anteriores. Deixei para a 4ª nota para ficar mais equilibrado.
Considere a seguinte extensão da gramática da Figura 6.22 (página 332), para incluir declarações de funções e ativações:
programa -> var-decls ; fun-decls ; decls
var-decls -> var-decls ; var-decl | var-decl
var-decl -> id : tipo-exp
tipo-exp -> int | bool | array [num] of tipo-exp
fun-decls -> fun id( var-decls ) : tipo-exp ; corpo
corpo -> exp
decls -> decls ; decl | decl
decl -> if exp then decl | id := exp
exp -> exp + exp | exp or exp | exp [ exp ] | id (exps)
| num | true | false | id
exps -> exps, exp | exp
-
Construa uma estrutura de subárvore adequada para as novas estruturas de tipos de funções e escreva uma função tipoIgual para dois tipos de funções.
-
Escreva regras semânticas para a verificação de tipos das declarações e ativações de funções (representadas pela regra exp -> id (exps)), similar às regras
da Tabela 6.10, página 333.