Compiladores/Pautas 2017-2018/Pauta do Projecto: Entrega Intermédia

From Wiki**3

< Compiladores‎ | Pautas 2017-2018
Revision as of 12:32, 5 May 2018 by Root (talk | contribs) (→‎Pauta)
AVISOS - Avaliação em Época Normal

Esclarecimento de dúvidas:

  • Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [1].
  • Não utilizar fontes de informação não oficialmente associadas ao corpo docente (podem colocar em causa a aprovação à disciplina).
  • Não são aceites justificações para violações destes conselhos: quaisquer consequências nefastas são da responsabilidade do aluno.

Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):

  • O material de apoio é de uso obrigatório e não pode ser alterado.
  • Verificar atempadamente (mínimo de 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de desenvolvimento.

Processo de avaliação (ver informação completa em Avaliação do Projecto):

  • Datas: 2018/03/23 17:00 (inicial); 2018/04/20 17:00 (intercalar); 2018/05/21 17:00 (final); 2018/05/21-2018/05/25 (teste prático).
  • A entrega inicial, sendo crucial para o projecto, é obrigatória e sua não realização implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina.
  • Verificar atempadamente (até 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de avaliação, incluindo a capacidade de acesso ao repositório CVS.
  • Apenas se consideram para avaliação os projectos existentes no repositório CVS oficial.
  • Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.
  • A avaliação do projecto pressupõe o compromisso de honra de que o trabalho correspondente foi realizado pelos alunos correspondentes ao grupo de avaliação.
  • Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação em curso.
Material de Uso Obrigatório
As bibliotecas CDK e RTS de apoio ao desenvolvimento do projecto são de uso obrigatório:
A máquina virtual, fornecida para desenvolvimento do projecto, já contém todo o material de apoio.
Uso Obrigatório: Repositório CVS
Apenas se consideram para avaliação os projectos existentes no repositório CVS oficial.

Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.

Prazo de Revisão

PAUTA EM ACTUALIZAÇÃO

A entrega intermédia pode ser revista até à data da entrega final do projecto.

Critérios de Avaliação

LER COM ATENÇÃO

A entrega intermédia vale 6 valores em 20.

A avaliação é realizada sobre a versão existente no CVS no final do prazo para a entrega intermédia. Projectos que não apresentem alterações relativamente ao conteúdo inicial do repositório CVS ou relativamente à entrega inicial não serão considerados.

A avaliação da entrega intermédia considera a execução de intervenções em várias regiões do código do compilador em desenvolvimento, assim como a gestão do projecto correspondente.

Advertem-se os alunos sobre a consulta de colegas de anos anteriores. Estas consultas podem ser positivas, mas comportam algum risco, pois o processo e critérios de avaliação podem ter mudado. Além disso, a proficiência do colega pode majorar negativamente o resultado da avaliação em curso. Não são admitidas quaisquer justificações com base na história da disciplina.

Estas condições são aplicáveis à data da entrega intermédia.

Em caso de dúvidas suscitadas por qualquer elemento neste texto, no projecto, ou na disciplina em geral, os alunos são fortemente encorajados a consultar o corpo docente.

VALORAÇÕES

Existem 6 valores (dos 20 disponíveis para o projecto) associados a esta entrega:

  • gestão do projecto: 1 valor
    • projecto com a estrutura correcta no repositório CVS: 0.5 valores (i.e., código que não apresente a estrutura canónica de um compilador desenvolvido com a CDK é considerado sem a estrutura correcta -- consultar estas páginas sobre o desenvolvimento do projecto com base no repositório CVS)
    • projecto compila e produz compilador "gr8" ("gr8", com letras minúsculas: variações correspondem a "não compilação"): 0.5 valores

Se o projecto compilar, poderão ser atribuídos mais 5 valores (desenvolvimento do compilador), distribuídos como se segue:

  • Flex (completo): 1.5 valores
    • Tokens correspondentes aos símbolos e palavras chave (simples ajuste do Simple)
    • Identificadores (simples ajuste do Simple)
    • Inteiros (deve estar implementada a base 7 -- a base 10 já está implementada no Simple)
    • Reais (extensão dos inteiros)
    • Strings (extensão do Simple)
    • O Flex deve retornar os tokens ao byacc (sobre DEBUG, ver abaixo) -- o não retorno de tokens penaliza fortemente toda a componente Flex (ver penalizações)
  • BYACC (completo): 1 valor
    • Regras correspondentes a literais de reais e strings (simples extensão do Simple)
    • Regras correspondentes a ciclos, etc. (simples extensão e adaptação do Simple)
    • Regras correspondentes a declarações de variáveis
    • Regras correspondentes a declarações/definições de funções
    • As acções correspondentes às regras definidas no BYACC devem estar implementadas (simples criação de nós) -- a não implementação corresponde a penalizações (var abaixo)
  • Nós (nodes) (completo): 1 valor
    • Todos os nós necessários para a linguagem (utilizados na especificação BYACC e em passos subsequentes) devem ser criados
    • A não criação de nós motivada pela ausência de definição de acções no BYACC é penalizada (ver abaixo)
  • Semântica (visitors) (xml_writer completo; postfix_writer ver a seguir): 1.5 valores
    • O "visitor" xml_writer deve estar completamente implementado (ver também DEBUG abaixo)
    • O "visitor" type_checker deve ter todos os métodos (correspondentes aos nós, tal como o xml_writer), embora alguns possam estar ainda vazios (i.e., podem não executar qualquer acção)
    • O "visitor" postfix_writer deve ter todos os métodos (correspondentes aos nós, tal como o xml_writer), embora alguns possam estar ainda vazios (i.e., podem não executar qualquer acção)
    • Métodos correspondentes a acções semelhantes às existentes devem ser modelados nos existentes (mesmo que não modificados numa primeira instância)
    • A presença de implementações de semântica no postfix_writer (tabela de símbolos, validação de tipos, etc.) não é penalizada, mas não será avaliada nesta entrega
PENALIZAÇÕES

Existem penalizações relativas à (deficiente) execução do projecto.

São considerados os seguintes aspectos preliminares:

  1. A linguagem do projecto contém a linguagem Simple, pelo que não há razão para não utilizar completamente o compilador Simple, eventualmente com pequenas alterações.
  2. A semântica da linguagem do projecto contém a da linguagem Simple, pelo que a implementação de alguns aspectos da linguagem do projecto não requer qualquer reimplementação relativamente ao Simple.
  3. O compilador Simple foi fornecido completamente funcional, assim como a versão inicial do compilador do projecto no respositório CVS (igual ao Simple e apenas alterado para ter o nome apropriado).
  4. A criação de novos nós não apresenta quaisquer dificuldades (são classes muito simples)
  5. O código dos métodos do visitor xml_writer corresponde a uma simples impressão dos atributos dos nós, através de uma travessia da árvore que formam e que os contém.
  6. O compilador é obrigatoriamente desenvolvido em C++.

Considerando os aspectos 1. a 6., são aplicadas as seguintes penalizações:

  • Destruição de funcionalidade do compilador Simple sem substituição por funcionalidade equivalente do compilador do projecto: 4 valores

Não definição dos nós para regras BYACC em avaliação (ver acima) ou não utilização de nós definidos para a escrita dessas acções: 2 valores

  • A utilização de funções e estruturas C, quando existem alternativas directas C++ (malloc em lugar de new, por exemplo; strcmp, etc. em lugar da classe std::string; e outras) terá uma penalização máxima de 1 valor
  • Não utilização de qualquer material obrigatório: 6 valores (e considera-se projecto não realizado)

DEBUG

O despiste de problemas em especificações Flex pode ser realizado de forma simples utilizando os métodos descritos em How to Debug a Flex Specification.

O visitor xml_writer foi concebido para produzir uma representação textual hierárquica (árvore XML) correspondente ao programa em compilação. É muito útil para inspeccionar a contrução da árvore de nós por parte do BYACC, permitindo, inclusivamente, a apresentação gráfica.

Legenda

As questões relativas às colunas "Problemas" devem ser resolvidas quanto antes (nos horários de dúvidas ou, sendo possível, por correio electrónico).

Problemas na análise lexical
  • .* - uso indevido do padrão
  • bases - problemas com bases (em falta)
  • chars - definição indevida (não existem na linguagem)
  • comments - problemas com comentários (em excesso ou em falta)
  • floats - problemas com vírgula flutuante (definições incompletas)
  • ids - problems com identificadores
  • ints - problemas com inteiros (definições incompletas ou excessivas)
  • keywords - problemas com palavras chave (a mais ou a menos)
  • negative literals - problemas com valores negativos (não existem)
  • ops - problemas com operadores e afins
  • patterns - problemas genéricos com escrita de padrões lexicais
  • strings - problemas na definição de strings (composição, concatenação indevida, etc.)
  • types - problemas com definição de tipos (e.g., uso do mesmo token dos literais)
  • [outros] - casos específicos (contactar professor responsável)
Problemas na análise sintáctica
  • conflicts - conflitos no analisador LALR(1) (não avaliado nesta entrega)
  • decls - problemas nas declarações (e.g. mistura com expressões ou com instruções)
  • empty rules - regras sem semântica associada
  • exprs - problemas nas expressões (em falta ou com inclusão de casos errados)
  • funcalls - problemas nas chamadas a funções (e.g. não estão definidos como expressões)
  • funcs - problemas (vários) nas declarações/definições de funções
  • lvals - problemas na definição de left-values (e.g. ausência de definições ou incompletas)
  • precs - problemas na definição de precedências (tipicamente, em excesso ou sem correspondência com o manual)
  • tokens - problemas na definição de tokens (tipicamente, em excesso ou sem correspondência com o manual)
  • read - problemas na definição da expressão de leitura (verificar manual de referência)
  • semantics - problemas na definição de acções semânticas
  • (simple) - contém apenas a definição original (linguagem Simple)
  • strings - problemas na definção de cadeias de caracteres
  • syntax - problemas na definição da gramática ou na semântica (nó) correspondente (verificar manual de referência)
  • [outras anotações] - casos específicos (contactar professor responsável)
Problemas na análise semântica e na geração de código (nós e XML)

Nos nós:

  • lvals - problemas na definição ou uso de left-values
  • decls - problemas na definição de declarações/definições de funções/variáveis
  • read_node - uso de left-value no read_node (não é uma atribuição, pelo que não tem left-values); ou derivação de basic_node (mas deve ser uma expressão); ou derivação de unary_expression (mas não tem argumentos); ou remoção do nó
  • [outros nós] - nós com problemas (nós excedentários ou em falta ou com problemas na definição)
  • [outras anotações] - casos específicos (contactar professor responsável)

No visitor xml_writer:

  • ast - o método "ast" do compilador não foi chamado no parser (.y), pelo que a AST está indefinida
  • empty methods - métodos vazios ou funcionalmente vazios
  • [outras anotações] - casos específicos (contactar professor responsável)

Pauta

EM ACTUALIZAÇÃO

<runphp> echo<<<___EOT___

<colgroup span="2" width="43"></colgroup> <colgroup width="48"></colgroup> <colgroup width="108"></colgroup> <colgroup width="48"></colgroup> <colgroup width="108"></colgroup> <colgroup width="48"></colgroup> <colgroup span="3" width="125"></colgroup> <colgroup width="148"></colgroup> <colgroup width="61"></colgroup> <colgroup width="38"></colgroup> <colgroup span="2" width="34"></colgroup> <colgroup span="2" width="38"></colgroup> <colgroup span="2" width="34"></colgroup> <colgroup span="2" width="53"></colgroup> <tbody> </tbody>
2.00 2.00 0.25 Problemas 0.25 Problemas 1.50 Problemas (a mais) (a menos)       A T     A T    
1.00 1.00 1.00   0.00 (corrigido) 0.50 read, if, if_else, address, decls, funcs, vars, access program, assignment null, alloc, identity, call                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, block, sweep, alloc, identity, call,decls, funcs, vars, types, lvals symmetric                        
1.25 1.25 1.00   1.00   0.50 again, stop, return, call, lvals, types, decls, funcs, vars                          
1.25 1.25 1.00   1.00   0.50 sweep, index, call, decls, funcs, vars, lvals float block, null bad decls, nomenc: sweep                    
1.25 1.25 1.00   1.00   0.50 read, print, again, stop, return, sweep, decls, funcs, access program, while, print null, alloc, address, identity, decls, vars                      
1.63 1.63 1.00   1.00   0.75 read, alloc, address, index while null, identity, call   7                  
1.25 1.25 1.00   1.00   0.50 read, print, sweep, index, decls, funcs, vars, lvals, access program, while, print, assignment, initially again, stop, return, block, null, alloc, address, identity, call   6                  
                                         
1.63 1.63 1.00   1.00   0.75 stop, lvals, return, sweep, address, decls, funcs, vars, access   print, again nomenc: sweep                    
2.00 2.00 1.00   1.00   1.00 sweep                          
1.25 1.25 1.00   1.00   0.50 read, again, stop, address, call, decls, funcs, vars, lvals, aceess program, while, print, assignment, symmetric, modulus null, index                      
1.63 1.63 1.00   1.00   0.75 sweep, alloc   identity nomenc: sweep                    
1.63 1.63 1.00   1.00   0.75 read, again, stop, return, address, decls, funcs for sweep nomenc: again, stop                    
1.63 1.63 1.00   1.00   0.75 if, if_else, call, decls, funcs, vars, lvals                          
2.00 2.00 1.00   1.00   1.00 read                          
1.63 1.63 1.00   1.00   0.75 address, index, call, decls, funcs, vars, lvals symmetric                        
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, block, sweep_cond, alloc, address, index, call while, assignment print, null                      
1.25 1.25 1.00   1.00   0.50 read, sweep, expressions, nodes, index, call, decls, funcs, vars, lvals, types while print, null                      
1.63 1.63 1.00   1.00   0.75 again, stop, sweep, address, decls, funcs elsif, assignment                        
1.25 1.25 1.00   1.00   0.50 read, again, stop, sweep, address, decls, funcs   block, null, call, decls, vars                      
1.63 1.63 1.00   1.00   0.75 (if), (if_else), index, call, decls, funcs, vars, lvals                          
1.25 1.25 1.00   1.00   0.50 read, alloc, index, identity, call, decls, funcs, vars, lvals program, while, symmetric null                      
0.25 0.25 1.00   0.00 não compila   read, print, again, stop, return, sweep program, while, print, elsif block, null, alloc, address, index, identity, call, decls, funcs, vars bad visitors, bad decls             1      
1.63 1.63 1.00   1.00   0.75 null, index (return_nil)                        
1.63 1.63 1.00   1.00   0.75 read, sweep, address, index                          
1.63 1.63 1.00   1.00   0.75 sweep, call, decls, funcs, vars   print                      
1.25 1.25 1.00 .git 1.00   0.50 read, again, stop, return, sweep, address, decls, funcs program, while, next, sweep_up, sweep_down print                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, address, decls, funcs while, symmetric print                      
1.63 1.63 1.00   1.00   0.75 read, null, sweep, index   print nomenc: again, stop, sweep                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, sweep, address, call, decls, funcs, vars while, initially                        
1.25 1.25 1.00   1.00   0.50 read, if_else, null, sweep, alloc,address, index, call, decls, funcs, vars, types, lvals program, assignment, fake, do, initially again, stop, block, identity nil extension                    
1.25 1.25 1.00   1.00   0.50 read, return, sweep, address, index, declsm funcs symmetric null, identity nomenc: signal                    
1.63 1.63 1.00   1.00   0.75 decls, vars, lvals                          
1.25 1.25 1.00   1.00   0.50 again, stop, return, sweep, identity, address, index, decls, funcs program null                      
1.63 1.63 1.00   1.00   0.75 read, print, sweep, call, decls, funcs, vars, types   null                      
1.00 1.00 1.00   0.00 (corrigido) 0.50 read, print, again, stop, sweep, expressions, alloc, address, call, decls, funcs, vars, types parentheses, initially   bad decls                    
2.00 2.00 1.00   1.00   1.00                            
                                         
1.25 1.25 1.00   1.00   0.50 again, stop, return, null, sweep, expressions, index, call, lvals, decls, funcs, vars, access while, do, initially print, decls, funcs bad decls, nomenc: call                    
2.00 2.00 1.00   1.00   1.00                            
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, expressions, address, index, decls, funcs, vars program, while print, null, decls, funcs nomenc: body                    
1.00 1.00 1.00   0.00 (corrigido) 0.50 read, again, stop, return, alloc, address, decls, funcs, vars, lvals symmetric, for null, sweep nomenc: again, stop                    
                                         
1.63 1.63 1.00   1.00   0.75 read   null, alloc, address, index, identity                      
1.25 1.25 1.00   1.00   0.50 read, address, call, decls, funcs, vars, lvals program, while null, identity                      
1.25 1.25 1.00   1.00   0.50 read, if, if_else, again, null, address, identity, decls, calls, lvals assignment, initially   bad decls                    
1.63 1.63 1.00   1.00   0.75 decls, types                          
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, calls, decls, funcs, vars, types, lvals initially null bad call                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, null, address, index, call, decls, funcs, vars, types program, while print, block, identity basic extension                    
1.63 1.63 1.00   1.00   0.75 read, return, address, decls, funcs                          
1.25 1.25 1.00   1.00   0.50 read, print, address, index, call, decls, funcs, types, lvals program null                      
1.63 1.63 1.00   1.00   0.75 read, again, stop, return, address program, while identity                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, address, index, decls, funcs program, while null                      
2.00 2.00 1.00   1.00   1.00                            
1.63 1.63 1.00   1.00   0.75 again, stop, return, sweep, address   null                      
1.63 1.63 1.00   1.00   0.75 read, again, stop, return, sweep, address, decls, funcs                          
2.00 2.00 1.00   1.00   1.00         71                  
1.63 1.63 1.00   1.00   0.75 read, address program identity                      
1.25 1.25 1.00   1.00   0.50 read, nilptr, index, identity, call, decls, funcs, vars, types     nomenc: null                    
1.25 1.25 1.00   1.00   0.50 read, null, sweep, address, decls, funcs, vars, types assignment   basic extension, bad decls                    
1.25 1.25 1.00   1.00   0.50 address, index, call, decls, funcs, vars, types program                        
1.25 1.25 1.00   1.00   0.50 read, address, index, call, decls, funcs, vars, types, lvals program, while, print, symmetric null                      
1.25 1.25 1.00   1.00   0.50 read, address, decls, funcs, vars, types symmetric print, null bad decls                    
1.25 1.25 1.00   1.00   0.50 read, alloc, decls, funcs, vars, types, lvals assignment null, address, identity bad decls                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, null, alloc, call, decls, funcs, vars program, while, print, elsif, file, (call without args) address, identity basic extension                    
1.25 1.25 1.00   1.00   0.50 read, pointer, sweep, alloc, address, index, call, decls, funcs, vars, types, lvals program, while, print, assignment, pointer null, identity bad decls                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, expressions, address, call program, while, print block, null, index, identity, decls, funcs, vars                      
2.00 2.00 1.00   1.00   1.00 return                          
1.63 1.63 1.00   1.00   0.75 read, again, stop, return, address                          
1.63 1.63 1.00   1.00   0.75 again, stop, sweep, address, index, decls, vars, access   print nomenc: again, stop, sweep                    
2.00 2.00 1.00   1.00   1.00         57                  
1.00 1.00 1.00   0.00 (corrigido) 0.50 return, again, stop, sweep, address, index, call, decls, funcs, vars, lvals program block, null, decls, vars bad decls, nomenc: again, stop, sweep                    
1.25 1.25 1.00   1.00   0.50 read, (if), (if_else), call, decls, funcs, vars, lvals   address                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep while, assignment print, decls, vars                      
1.25 1.25 1.00   1.00   0.50 read, return, sweep, address, call, decls, funcs   print, null, identity                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, decls, funcs program, while, symmetric print, null incrkind 86                  
1.63 1.63 1.00   1.00   0.75 sweep, address, call, decls, funcs, vars, lvals     nomenc: again, stop, sweep                    
2.00 2.00 1.00   1.00   1.00 address                          
1.25 1.25 1.00   1.00   0.50 again, stop, return, sweep, address, call, lvals, decls, funcs, vars     bad decls                    
1.63 1.63 1.00   1.00   0.75 read, null, sweep, address, decls, funcs                          
1.25 1.25 1.00   1.00   0.50 if, if_else, again, stop, return, null, address, index, decls, funcs, vars, types for print, sweep basic extension                    
1.25 1.25 1.00   1.00   0.50 read, print, sweep, alloc, address, index, call, decls, funcs, vars, lvals, types program null                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, call, decls assignment, instruction alloc, address, index, identity                      
1.63 1.63 1.00   1.00   0.75 if, if_else, sweep, index     nomenc: again, stop, sweep                    
                                         
1.38 1.38 1.00   0.00 (corrigido) 0.75 read, again, stop, return, sweep program, while, symmetric print, null incrkind 76                  
1.63 1.63 1.00   1.00   0.75 read, call, decls, funcs   null bad call                    
1.63 1.63 1.00   1.00   0.75 read, again, stop, index, decls, funcs, vars, types                          
0.19 0.19 0.75 post_node 0.00 não compila   (incomp), alloc, address, identity   print, again, stop, return, block, null, index, call, decls, funcs, vars                      
1.25 1.25 1.00   1.00   0.50 block, identity, address, call, lvals, decls, funcs, vars, lvals function_definition_node null bad decls 92                  
1.63 1.63 1.00   1.00   0.75 again, stop                          
1.25 1.25 1.00   1.00   0.50 stop, return, null, address print, function_definition_node   bad decls, basic extension 90                  
0.25 0.25 1.00   0.00 não compila   (incomp), again, stop, lvals, return   print, block, null, sweep, alloc, address, index, identity, call, decls, funcs, vars               1      
1.25 1.25 1.00   1.00   0.50 read, again, stop, alloc, address, call, decls, funcs, vars, type program, elsif, symmetric null                      
1.25 1.25 1.00   1.00   0.50 read, sweep, alloc, address, call, decls, funcs, vars, types, lvals assignment identity                      
1.25 1.25 1.00   1.00   0.50 read, return, null, sweep, decls, funcs, vars, lvals     bad decls                    
1.25 1.25 1.00   1.00   0.50 read, program, while, again, stop, return, sweep, nodes, alloc, index, identity, call, decls, funcs, vars, lvals program, while print, null, address bad call, bad decls                    
1.25 1.25 1.00   1.00   0.50 read, decls, funcs, vars, lvals while null, alloc, address, index, identity, call, decls, funcs bad decls                    
1.25 1.25 1.00   1.00   0.50 read, address, index, call, decls, funcs symmetric, initially null, decls, vars                      
NA sem entrega inicial                       1              
2.00 2.00 1.00   1.00   1.00 address                          
1.25 1.25 1.00   1.00   0.50 read, return, sweep, lvals, address, index, decls, funcs program, while, assignment, symmetric null                      
2.00 2.00 1.00   1.00   1.00 null while   basic extension                    
1.25 1.25 1.00   1.00   0.50 read, sweep, alloc, address, index, call, decls, funcs, vars, types, lvals program, while print, null, identity bad call, bad decls                    
1.25 1.25 1.00   1.00   0.50 read, return, alloc, address, index, nodes, call program, while, symmetric, do null nomenc: call                    
2.00 2.00 1.00   1.00   1.00 if, if_else     nomenc: call                    
1.25 1.25 1.00   1.00   0.50 read, return, sweep, address, call, decls, funcs while print, null, identity, decls, vars bad decls                    
1.63 1.63 1.00   1.00   0.75 read, return, address   print                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, sweep, alloc, address, index, identity, decls, funcs, vars, types, lvals elsif, declaration null, call                      
1.25 1.25 1.00   1.00   0.50 read, sweep, alloc, address, index, identity, call, decls, funcs, vars, lvals while null bad visitors                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, address, decls, vars program, while, print, for null, sweep, decls, funcs bad decls, nomenc: again, stop, body                    
NA sem entrega inicial                       1              
0.25 0.25 1.00   0.00 não compila   read, again, stop, return, index, call, decls, funcs program, assignment identity               1      
1.63 1.63 1.00   1.00   0.75 read, again, stop, null, sweep     basic extension                    
0.25 0.25 1.00   0.00 não compila   read, (print), again, stop, sweep, decls, funcs, types program, while, covfefe block, null, alloc, address, index, identity, call, decls, vars               1      
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, address, decls, funcs   decls, vars                      
1.25 1.25 1.00   1.00   0.50 again, stop, lvals, print, index, decls, funcs, vars, types   evaluation, read, print, null, alloc, address, identity, call                      
1.25 1.25 1.00   1.00   0.50 read, print, again, stop, return, address, index, call, decls, funcs, vars program, while, print, symmetric null, alloc                      
0.25 0.25 1.00   0.00 não compila   (incomp), print   again, stop, return, block, null, sweep, alloc, address, index, identity, call, decls, funcs, vars               1      
NA sem entrega inicial                       1              
2.00 2.00 1.00   1.00   1.00                            
1.25 1.25 1.00   1.00   0.50 read, block, null, alloc, address, index, call, decls, funcs, vars program, while, print, qualifier, external, do, float, public, decls, funcs, vars, call (decls) basic extension                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, alloc, index, decls, funcs, vars, lvals function_node null, call                      
NA sem entrega inicial                       1              
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, address program, while, assignment print                      
1.25 1.25 1.00   1.00   0.50 read, return, sweep, address, call, decls, funcs program, while null, index                      
1.63 1.63 1.00   1.00   0.75 swep, index, identity, decls, funcs, vars, types   null nomenc: sweep                    
1.63 1.63 1.00   1.00   0.75 read, return, sweep, address, decls, funcs                       rvalue  
1.25 1.25 1.00   1.00   0.50 read, print, return, decls, funcs, vars, types program, assignment null, alloc, address, index, identity, call                      
1.25 1.25 1.00   1.00   0.50 read, again, stop, decls, funcs, vars, types program, assignment alloc, address, index, identity, call bad decls, nomenc: repetition, sweep                    
1.63 1.63 1.00   1.00   0.75 read, again, stop, return, null, sweep symmetric, initially identity nomenc: signal                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, index, call, decls, funcs, vars, types, lvals program, symmetric   bad decls                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, address, call, decls, funcs, vars, types, lvals while print, block, null, identity                      
1.25 1.25 1.00   1.00   0.50 again, stop, return, sweep, decls, funcs program, while address                      
1.00 1.00 1.00   0.00 (corrigido) 0.50 read, index, decls program, while, qualifier print, block, null, alloc, address, identity, call, decls                      
2.00 2.00 1.00   1.00   1.00 again, stop                          
1.63 1.63 1.00   1.00   0.75 decls, funcs                          
1.25 1.25 1.00   1.00   0.50 read, print, again, stop, address, index, call, decls, funcs, vars, types, lvals while block, null bad call, bad decls                    
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, null, call, decls, funcs, lvals program, while, assignment, symmetric, (address) decls, vars               1      
1.25 1.25 1.00   1.00   0.50 read, again, stop, address, call, decls, funcs, vars, types, lvals program, while, print, elsif, assignment, symmetric, subtraction null, index                      
NA sem entrega inicial                       1              
0.25 0.25 1.00   0.00 não compila   read, again, stop, return, sweep, address, call, lvals, decls, funcs, vars program, elsif, assignment null, identity               1      
1.25 1.25 1.00   1.00   0.50 return, address, index, call, decls, funcs, vars, lvals, types, types while, parentheses, function_identifier block, null, identity                      
1.25 1.25 1.00   1.00   0.50 read, decls, funcs program, while print, null, alloc, address, decls, vars                      
1.63 1.63 1.00   1.00   0.75 read, address for print, sweep nomenc: again, stop                    
1.25 1.25 1.00   1.00   0.50 read, return, block, pointer, sweep, alloc, call, decls, vars, lvals program, while, float, pointer null, address, index, identity                      
0.25 0.25 1.00   0.00 não compila   read, again, stop, sweep, expressions, alloc, etc. program, while, print, elsif, assignment, initially, public, use block, null, address, index, identity, call, decls, funcs, vars nomenc: files             1      
2.00 2.00 1.00   1.00   1.00                            
1.25 1.25 1.00   1.00   0.50 index, call, lvals, types, decls, funcs, vars for block, null, sweep, identity bad call                    
1.25 1.25 1.00   1.00   0.50 read, sweep, address, call, lvals, decls, funcs, vars parentheses print, null, alloc, index, identity nomenc: again, stop, sweep                    
1.25 1.25 1.00   1.00   0.50 read, print, sweep, address, index, decls, funcs, vars, lvals pointer, read print, null, identity, call                      
0.25 0.25 1.00   0.00 não compila   read, return, alloc, decls, funcs, types program, while, print, assignment, for null, sweep, identity               1      
1.63 1.63 1.00   1.00   0.75 read, (print), index, (qualifier), call, lvals, decls, funcs parentheses null                      
1.63 1.63 1.00 .directory 1.00   0.75 while, null, address, call     basic extension                    
1.38 1.38 1.00   0.00 (corrigido) 0.75 read, again, stop, sweep, address, call, lvals, decls, vars symmetric null                      
NA sem entrega inicial                       1              
1.25 1.25 1.00   1.00   0.50 read, again, stop, return, sweep, decls, funcs while, elsif, assignment block, null, alloc, address, index, identity, call, decls, vars                      
NA sem entrega inicial                       1              
NA sem entrega inicial                       1              
NA sem entrega inicial                       1              
1.63 1.63 1.00   1.00   0.75 read, print, return, address   null, identity                      
NA sem entrega inicial                       1              
1.36 1.36 1   0.89   0.63             10 0     9 0    

___EOT___; </runphp>