Qual a data limite de entrega da primeira parte do projecto (checkpoint)?
Não está definida. Tal como diz no enunciado do projecto na secção 4.:"Para o checkpoint considera-se os ficheiros do projecto, existentes no servidor cvs, com a etiqueta (tag) checkpoint ou a última versão à data da avaliação (quer essa versão esteja funcional ou não) caso a etiqueta checkpoint não exista."
Cabe aos alunos colocarem a etiqueta quando julgarem ter atingido os objectivos da primeira parte, descritos na secção 2.3. do enunciado do projecto.
Sou obrigado a usar a função printNode fornecida?
Não é obrigatório usarem o printNode nem é obrigatório usarem as estruturas de dados fornecidas.No entanto, só faz sentido não usarem o printNode no caso em que usem uma implementação própria da árvore sintáctica.
NO ENTANTO a rotina a usar deve produzir um output IGUAL ao do printNode.
Qual o tipo de dados retornado por uma expressão de indexação? Como imprimir?
A expressão de indexação devolve um valor de 4 bytes de tipo inteiro (number em frac). Como tal a impressão deve recorrer à rotina printi, de impressão de inteiros.
Considerem o seguinte código:
1: number y := 35; 2: number x := &y; 3: [x]! 4: x!A linha 3 imprime '35'.
A linha 4 imprime o endereço de memória de y.
Não esquecer que o código seguinte também deve ser aceite:
1: string s := "ola"; 2: number x := &s; 3: number y := 0; 4: y := [x] + 5; 5: y! 6: x!
Na linha 4 são lidos 4 bytes de memória e somados algebricamente com 5.
Na linha 5 é impresso o resultado da soma.
A linha 6 imprime o endereço de memória de s.
Chama-se a atenção para o facto da instrução de reserva de memória na pilha (#) alocar espaço na pilha e não no heap, sendo o número indicado em bytes e não em inteiros. Não houve alteração de enunciado, sempre foi assim, pelo que não há (nem tem de haver) referência a isto na errata.