Últimas Notícias

 

 

7 de Dezembro

 

            As notas das entrevistas já sairam. Quase todo mundo tirou 10. As notas dos trabalhos só sairão na semana que vem. Quase todas as pessoas demonstraram que realmente fizeram o trabalho e o compreenderam razoavelmente. Estou contente.

 

 

30 de Novembro

 

            Muitas pessoas me pediram para fazer a entrevista na Quinta feira. Como as salas são  muito pequenas, reservei duas salas maiores para a entrevista. São elas:

 

        8h-10h, sala 187 da AT5

        10-12h, sala 148 da AT3

 

26 de Novembro 

 

            A geração de código utilizando o artigo Geração de Código de Simples para C - Um Meio Alternativo de Gerar Código para Envios de Mensagem se revelou mais difícil do que aquela descrita no artigo Geração de Código em C para Simples. A mistura dos dois tipos de geração de código para envio de mensagem está  um “pouco”  confuso também. Então resolvi adiar a entrega para a próxima Quarta feira, dia 1 de Dezembro até o fim da tarde (18h). Mas não pode ser mais do que isto.

            A entrevista não será com consulta. Lembrem-se de obedecer às exigências que estão no final da página que descreve o trabalho 2, como não colocar a classe Comp dentro de um pacote.

 

17 de Outubro

 

           Escrevo para lembrá-los de que o código gerado pelo compilador de vocês deverá ser na linguagem C padrão. NÃO gerem código para o gcc, compilador normalmente utilizado no Linux e Unix. O gcc NÃO utiliza C padrão, mas uma linguagem que tem o mesmo nome que C mas que é diferente. Se um compilador gerar código que apenas o gcc compila, ao testar este compilador no meu computador serão sinalizados vários erros de compilação.

            Ao gerar o protótipo dos métodos “new”, acrescente “void” nos parâmetros, assim :

                           class_A *new_A(void);

Isto evita que o compilador C emita erros do tipofunção utilizada sem protótipo”.

                       

16 de Outubro (19h)

 

            Acrescentei alguns parágrafos na página Geração de Código de Simples para C - Um Meio Alternativo de Gerar Código para Envios de Mensagem. Os parágrafos começam em

 

            É fundamental que o número de cada classe seja dado após o término da análise sintática e criação da ASA. Utilize o seguinte algoritmo para numerar as classes:

 

Acrescentei também o seguinte parágrafo:

 

Sem considerar as conversões de tipo. Veja esta codificação para um exemplo completo. Neste exemplo, utilizamos classNumber no lugar da variável n que informa o número da classe. O arquivo “sda.txt” contém a saída do programa “ok-ger20.c” depois de compilado e executado. O arquivo “ok-ger20-metodo-antigo.c” contém o arquivo “ok-ger20.s” compilado utilizando o método antigo de compilação, o que está no artigo Geração de Código em C para Simples. O arquivo “ok-ger20.c” contém o arquivo “ok-ger20.s” compilado segundo o método descrito nesta página (o que vocês devem utilizar).

 

Agora vocês têm um exemplo completo de codificação.

 

 

16 de Outubro

 

            Pessoal, há um erro na página sobre o meio alternativo de gerar código para envio de mensagem. Onde está

 

    dt_m_A[a->n](a);

    dt_m_A[b->n](a);

    dt_m_A[c->n](a);

    dt_m_A[d->n](a);

 

deve-se ler

 

    dt_m_A[a->n](a);

    dt_m_A[b->n](b);

    dt_m_A[c->n](c);

    dt_m_A[d->n](d);

 

 

 

22 de Outubro de 2004  (20h)

 

     Veja novamente o cálculo da nota na observação abaixo. Estava errado.

 

22 de Outubro de 2004

 

            Pessoal, finalmente terminei a correção dos trabalhos. Ao calcular a primeira nota, N1, considerei

                    N1 = (T1 + E1)/2 se (E1 >= 6 e T1 >= 6) ou (E1 >= 8)

                    N1 = menor nota entre Ti e Ei caso contrário

O cálculo como está na página Avaliação deixaria muitas pessoas com notas baixas injustamente, pois muitos tiraram 10 na entrevista e uma nota baixa no trabalho. Ninguém foi prejudicado pela nova maneira de calcular a nota. Observem que modifiquei este cálculo porque fui rígido ao dar nota aos trabalhos. Vocês têm até Sexta feira da semana que vem para ver o trabalho corrigido.

 

            Até agora ninguém tirou qualquer dúvida com relação ao segundo trabalho.

 

            Espero que as pessoas que estejam se formando comecem agora a fazer o segundo trabalho. É muito desagradável que um aluno me procure no final do semestre e peça para passá-lo porque ele está se formando, tem um emprego, etc, sendo que este aluno não tenha feito quase nada durante o semestre, nem sequer me procurado uma única vez para tirar dúvidas. Eu não dou nota não merecida. Seria uma ofensa aos outros alunos que perderam noites de sono e momentos de lazer para fazer o trabalho. E uma injustiça.

 

 

21 de Outubro de 2004

 

            O grupo composto por André Luiz G. Gomes de Souza e Tiago R. Mello deve se comunicar comigo. Tenho o trabalho escrito mas não os arquivos do compilador. Não encontrei nenhum email de um dos elementos do grupo enviando o trabalho.

 

20 de Outubro de 2004

 

            está disponível um pequeno texto que os auxiliará a fazer o segundo trabalho. Vocês poderão fazer a revisão da entrevista escrita até Quarta feira da semana que vem. Tenho estado aqui parte da manhã e todas as tardes.

 

 

19 de Outubro de 2004 (18h)

 

         Pessoal, modifiquei um pouquinho a especificação do trabalho:

  • no item 1, agora a geração do código em C deve ser corretamente identado. Isto facilitará a conferência da geração do código em C;
  • no item 4, acrescentei o seguinte:

          O compilador deve detectar estes erros se, ao chamar o compilador, utilizarmos a opção –w de compilação. Exemplo:
                   java Comp –w  er-chk07.s

 

       Utilize o arquivo t2.bat para testar o seu compilador para o segundo trabalho. Observe que algumas conferências semânticas serão necessárias para este trabalho, relativo aos itens 2 e 3 (geração de “getters” e “setters” e diretiva “forwardsTo”). Pegue o arquivo testes.zip novamente. Ele agora contém os novos arquivos de teste utilizados em t2.bat. Como eu não tenho um compilador completo para testar os novos testes, eles podem conter alguns erros sintáticos e até semânticos. Se isto acontecer, avisem-me que eu corrijo-os para o resto da turma.

 

 

19 de Outubro de 2004 (15h)

 

            Modifiquei o item 6 da folha da capa. Ele apenas reforça uma exigência do trabalho, a de não colocar Comp.* dentro de nenhum diretório ao criar o .zip a ser enviado ao professor.

 

            Novos testes para o trabalho 2 estão disponíveis: er-sem57 até er-sem62, ok-sin16.s e ok-ger17.s

 

19 de Outubro de 2004

 

            As notas das turmas A e B sairam. As notas do trabalho sairão em breve.

 

            Não consegui compilar/executar os compiladores dos seguintes grupos:

  - Bruno-Guilherme

  - Vinícius Regra

 

Estas pessoas deverão me procurar até o fim desta semana para, no meu computador, compilar e executar o compilador (se isto for possível).

 

 

6 de Outubro de 2004

 

            Pessoal,  eu sei que os itens 2 e 3 do trabalho podem realmente trazer algum trabalho se vocês não tomarem um pouco de cuidado. Então, para ajudá-los, pretendo dar boas dicas de como fazer estes itens. Aguardem. E perguntem.

 

            Havia um erro no arquivo ok-chk06.s. Uma variável de instância b na classe C estava sendo referenciada sem o “self”. A classe correta é

 

class C

  private:

    var b : B;

  public:

    proc m()

      begin

      self.b.m();

      end

    proc get() : B

      begin

      return self.b;

      end

end

 

5 de Outubro de 2004

 

     As notas das entrevistas de Segunda saíram. As notas dos trabalhos sairão em breve.

 

1 de Outubro de 2004

 

     Apenas um dos membros do grupo deverá levar uma cópia impressa no dia da entrevista. No site do trabalho, eu peço para ambos levarem uma cópia. Desisti de fazer uma prova separada com questões que exigiriam consulta. Ficaria muito complicada.

 

27 de Setembro de 2004

 

      Os grupos que não entregaram o trabalho devem fazê-lo até Quarta feira. Este prazo deve ser obedecido porque eu tenho que fazer as entrevistas escritas para Segunda feira. E parte da entrevista depende especificamente de cada trabalho.

 

            O meu quadro de horários se modificou. Estou aqui às terças feiras à tarde.

 

23 de Setembro de 2004

 

            Lembro-os de duas coisas importantes:

- se o trabalho de vocês estiver em um diretório c:\Trab e fizermos

          set classpath=c:\Trab

   então

          java Comp ok-sin05.s

   deve chamar o seu compilador.   Então NÃO coloque a classe Comp dentro de um pacote. Eu vou testar os trabalhos com um .bat e então **todos** os  trabalhos têm que estar padronizados.

- o seu compilador deve passar por todos os testes ok-*.s  e deve sinalizar erros nos arquivos er-*.s que estão descritos na página do trabalho.

 

            Algumas pessoas das turmas de Segunda me pediram para fazer a entrevista na Quinta. Peço a estas pessoas para me enviarem um email na semana que vem avisando deste fato. Preciso preparar as provas de acordo com as pessoas (as provas serão individuais).

            Muitas pessoas que estão fazendo estágio me procuraram perguntando se eu não podia aplicar a prova para elas em outro dia que não o da aula. Não posso. Primeiro, porque as aulas (e as entrevistas) estavam previstas há muito tempo e o estágio deveria ser apenas em dias em que o aluno não tem aula. Segundo, porque isto me obrigaria a fazer provas diferentes para estas pessoas, o que me daria um trabalhão. E cada um que me procura quer fazer em um dia diferente. Se fosse entrevistas orais, como nos anos anteriores, não haveria problema algum. Mas neste ano não há possibilidade de adiar a data da entrevista.

 

22 de Setembro de 2004

 

Eu vou pegar os trabalhos na Segunda feira. Em geral faço isso mesmo. E nesta Segunda pegarei os trabalhos às 19h. Então vocês podem entregar até esta hora sem decréscimo de nota.

 

 

15 de setembro de 2004

 

No método assignmentMessageSendStatement  da classe Compiler, havia a criação de um objeto de MessageSendStatement (ou subclasses) inutilmente. Veja no fim do trecho abaixo.

 

   private Statement assignmentMessageSendStatement() {

      String methodName, variableName;

      ExprList exprList;

      Statement result = null;

      /*

         there are six possibilities:

            super.id()

            self.id()

            self.id = expr

            self.id.id()

            id = expr

            id.id()

      */

     

      switch ( lexer.token ) {

         case Symbol.SUPER :

               // super.id()

            lexer.nextToken();

            if ( lexer.token != Symbol.DOT )

               error.show(". expected");           

            lexer.nextToken();

            if ( lexer.token != Symbol.IDENT )

               error.show(CompilerError.identifier_expected);

            methodName = lexer.getStringValue();

            lexer.nextToken();

            exprList = getRealParameters();

            //# corrija

            // result = new MessageSendStatement(

            //     new MessageSendToSuper( pointer to class, pointer to method, exprList) );

            break;

         case Symbol.SELF :

            lexer.nextToken();

            if ( lexer.token != Symbol.DOT )

               error.show(". expected");

            lexer.nextToken();

            if ( lexer.token != Symbol.IDENT )

               error.show(CompilerError.identifier_expected);

            String ident = lexer.getStringValue();

            lexer.nextToken();

            switch ( lexer.token ) {

               case Symbol.ASSIGN :

                     // self.id = expr

                  lexer.nextToken();

                  Expr anExpr = expr();

                  //# corrija

                   //***************  Estava aqui o erro. Havia a criação de um objeto de

                   //***************  MessageSend??????   inutilmente.

                  /* result = new AssignmentStatement( pointer to instance variable,

                        anExpr); */

                  break;

               case Symbol.DOT :

 

13 de Setembro de 2004

 

O primeiro comentário  // corrija da classe Compiler é

 

       //# corrija: a chamada de createResult deve estar na
       // class Comp, NÃO aqui. A chamada foi colocada aqui
       // porque este método (compile)
       // retorna null mesmo se houve sucesso na compilação.
       /*if ( error.wasAnErrorSignalled() ) {
          p = null;
          Comp.createResult("0");
       }
       else
          Comp.createResult("1");
       */

 

Simplesmente removam este comentário. Ele não vale mais.

 

Eu recomendo a todos que não estão na lista da disciplina para entrarem imediatamente. Algumas perguntas com dúvidas importantes estão sendo colocadas apenas na lista. Naturalmente, quem se inscrever agora poderá ir na página do grupo e ver as últimas mensagens.

 

30 de Agosto de 2004

 

Hoje pela primeira vez desde o início do semestre alguém me procurou para tirar dúvidas a respeito do trabalho. Aconselho-os a começar a fazer o trabalho hoje mesmo pois dificilmente haverá adiamento da data de entrega. O adiamento acontece quando muitas e muitas pessoas me procuram (durante todo o período disponível) e eu vejo que realmente o tempo foi insuficiente.

            Tenho trabalhado muito em casa e portanto está sendo mais difícil me encontrar este semestre na minha sala do que nos outros anteriores. Infelizmente sou interrompido muito frequentemente na minha sala e é muito difícil, quase impossível, escrever um artigo ou ler um texto difícil na Federal.

       Nos seguintes horários

                 Quarta  das 14h (ou um pouquinho depois)   às 15:45

                 Quinta  das 14h às 16h

eu estarei na minha sala para tirar dúvidas a respeito do trabalho para aquelas pessoas que não fizeram Construção de Compiladores comigo. Como o compilador que forneci foi feito no estilo que utilizei durante todo o primeiro semestre, as pessoas que não fizeram comigo, mesmo que tenham aprendido muito bem compiladores, terão mais dificuldades para fazer o trabalho. Acho extremamente importante que estes alunos compareçam, mesmo que seja para eu ter uma idéia de como estão indo.