<?xml version="1.0" ?>

<documento html="default" latex="article">

<titulo> Processamento de Linguagens e Compiladores
</titulo>

<autor>
João Saraiva <br/>
<link href="mailto:jas@di.uminho.pt"> jas@di.uminho.pt </link>
</autor>

<instituicao>
<it> <large> Matemática e Ciências da Computação </large> </it> <par/>
<bold> <it> 2005/2006 </it> </bold>
</instituicao>

<par/>


Esta página contém informação relativa à cadeira de <it>Processamento
de Linguagens e Compiladores</it> a decorrer no <it>ano lectivo
2005-2006</it>. Processamento de Linguagens e Compiladores é uma
cadeira do 2º Semestre do 2º Ano da licenciatura em Matemática e
Ciências da Computação.

<par/>

<small>
<it> Esta página está a ser gerada a partir de um documento XML, por
uma ferramenta que utiliza os métodos de programação leccionados neste
curso (eg, expressões regulares, autómatos finitos e gramáticas
independentes do contexto). A partir da especificação XML é produzida
esta página, bem como a sua representação em LaTeX. O formato LaTeX dá
origem aos seguintes documentos em postscript e pdf:

 <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/pagina_plc.ps">[ps]
</link>,<link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/pagina_plc.pdf">[pdf]
</link>
</it>
</small>

<par/>


<imagem ficheiro="newflash.gif">
<huge> <bold> <cor cor="green"> Novidades e Avisos </cor> </bold> </huge>
</imagem>

<par/>

<centrar>
<tabela border="1">





<linha>
<elem>(27-07-06)</elem>
<elem>
<itemize>

<item> <bold><cor cor="red">As notas da época de recurso estão disponíveis. 
 </cor></bold> </item>

<item> <bold><cor cor="red">Os alunos podem consultar os exames na 6a feira (dia 28 de Julho). 
 </cor></bold> </item>


</itemize>
</elem>
</linha>


<linha>
<elem>(17-07-06)</elem>
<elem>
<itemize>

<item> <bold><cor cor="red">As notas finais estão disponíveis. 
 </cor></bold> </item>

<item> <bold><cor cor="black">Possíveis soluções dos trabalhos
práticos (apresentadas pelos alunos) estão disponíveis na secção
<it>Contribuições dos Alunos </it> </cor></bold> </item>

</itemize>

</elem>
</linha>

<linha>
<elem>(14-07-06)</elem>
<elem>
<itemize>

<item> <bold><cor cor="red">As notas da duas chamadas da época normal
de exames estão disponíveis. 
 </cor></bold> </item>

<item> <bold><cor cor="black">Os enunciados dos exames estão também
disponíveis </cor></bold> </item>

<item> <bold><cor cor="black">Os exames podem ser consultados na
próxima segunda-feira (dia 17) </cor></bold> </item>

<item> <bold><cor cor="black">As notas dos testes práticos serão disponibilizadas na segunda-feira (tl como se pode ler em baixo...) </cor></bold> </item>

</itemize>

</elem>
</linha>



<linha>
<elem>(27-06-06)</elem>
<elem>
<itemize>

<item> <bold>Pela quantidade de emails que tenho
recebido a perguntar quando é o dia 19, vejo que esta página está a
ser acedida frequentemente. Já agora acedam também à página seguinte
que permite ver resultados de análise de <it>performance de várias
linguagens de programação</it> (cerca de 50) e dos seus compiladores: <link
href="http://shootout.alioth.debian.org/"> The Computer Language
Shootout Benchmarks</link> </bold> </item>

<item> <cor cor="black">Sim! O ghc e a linguagem Haskell está com uma performance bem à frente do Java e cada vez mais próxima da linguagem C
(gcc)!!</cor> </item>

<item> <cor cor="black">BTW, este concurso não está a ser
organizado pelas pessoas das linguagens funcionais...</cor>
</item>

<item> <bold><cor cor="black">Depois de todos os alunos terem
consultado esta página as notas serão afixadas :-)</cor></bold>
</item>


</itemize>

</elem>
</linha>



<linha>
<elem>(16-06-06)</elem>
<elem>
<itemize>

<item> <bold><cor cor="red">As notas da apresentação/defesa dos
  Trabalhos Práticos já estão disponíveis.  </cor></bold> </item>

<item> <bold><cor cor="black">As notas dos testes práticos serão
  disponibilizadas na 2a feira (19 de Junho)</cor></bold> </item>

</itemize>

</elem>
</linha>




<linha>
<elem>(05-06-06)</elem>
<elem>
<itemize>

<item> A página para entrega do Trabalho Prático nº2 está disponível
em <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/entrega_tp2.html"> página de submissão do 2º Trabalho</link> </item>


</itemize>
</elem>
</linha>






<linha>
<elem>(30-05-06)</elem>
<elem>
<itemize>


<item> 
  <cor cor="red"><bold>Uma nova versão do Gram2C está disponível</bold></cor>. Apaguem a versão antiga e instalem esta nova versão.
</item>

<item> <bold>Esta nova versão tem na directoria de <cor
  cor="green">Exemplos</cor> o exemplo <cor cor="gree">List</cor>
  estudado hoje nas aulas. Re-utilizem a Makefile e vejam como o
  código C gerado é incluído no lex e yacc</bold> </item>

<item> Os apontamentos sobre as regras de conversão de Gramáticas
Abstractas para C estão disponíveis em <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/CFGinC.tgz">pdf</link> e em <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ArvoresAbstractas.tgz">ficheiro fonte</link> 

     <itemize>
     <item> Vejam o exemplo Block, especialmente como o yacc cria a
     Árvore Abstracta que respresenta uma frase. No trabalho prático
     terão de criar uma Árvore Abstracta que repesenta BC--.  
     </item>
     </itemize>


</item> 

</itemize>
</elem>
</linha>




<linha>
<elem>(26-05-06)</elem>
<elem>
<itemize>


<item> 
  O 2º trabalho prático já está disponível.
</item>

<item> 
  <bold>Na secção de software está disponibilizado algum software
        necessário na resolução deste trabalho.</bold>
</item>

</itemize>
</elem>
</linha>






<linha>
<elem>(28-04-06)</elem>
<elem>
<itemize>


<item> A página para entrega do Trabalho Prático 1 está disponível em
<link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/entrega_tp1.html">
página de submissão de trabalhos</link> 
</item>

<item> A Fichas Teórico-Prática nº8 já está disponível.</item>

</itemize>
</elem>
</linha>



<linha>
<elem>(28-04-06)</elem>
<elem>
<itemize>

<item> A Fichas Teórico-Prática nº7 já está disponível.</item>

<item> Um exemplo de um scanner escrito directamente em Haskell está
disponível em  <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/scanner.hs">scanner.hs </link> 
</item>

<item> Exemplos de scanners escrito em Lex estão disponíveis nos
apontamentos <it>Especificação e Processamento de Linguagens</it> (ver
bibliografia)
</item>

</itemize>
</elem>
</linha>




<linha>
<elem>(12-04-06)</elem>
<elem>
<itemize>
<item> O 1º trabalho prático já está disponível.
</item>
</itemize>
</elem>
</linha>



<linha>
<elem>(11-04-06)</elem>
<elem>
<itemize>

<item>A Fichas Teórico-Prática nº6 já está disponível.</item>

<item>As regras de conversão de expressões regulares em autómatos finitos não deterministas estão disponíveis em <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/conversaoRegExp2Ndfa.pdf">conversaoRegExp2Ndfa.pdf. </link> 
</item>

</itemize>
</elem>
</linha>


<linha>
<elem>(25-03-06)</elem>
<elem>
<itemize>
<item>As Fichas Teórico-Práticas nº4 e nº5 já estão disponíveis.</item>
</itemize>
</elem>
</linha>


<linha>
<elem>(20-03-06)</elem>
<elem>
<itemize>
<item>A Ficha Teórico-Prática nº3 já está disponível.</item>
</itemize>
</elem>
</linha>


<linha>
<elem>(13-03-06)</elem>
<elem>
<itemize>
<item>A Ficha Teórico-Prática nº2 já está disponível.</item>
</itemize>
</elem>
</linha>



<linha>
<elem>(06-03-06)</elem>
<elem>
<itemize>
<item>A Ficha Teórico-Prática nº1 já está disponível.</item>
</itemize>
</elem>
</linha>


<linha>
<elem>(01-03-06)</elem>
<elem>
<itemize>
<item><cor cor="red">Aula teórica de substituição:</cor> 
5ª Feira, dia 2 de Março, 10:00, <bold>sala DI 0.04</bold></item>
</itemize>
</elem>
</linha>

<linha>
<elem>(27-02-06)</elem>
<elem>
<itemize>
<item>A página da disciplina está no "ar".</item>
</itemize>
</elem>
</linha>

</tabela>
</centrar>


<par/>

<par/>


<capitulo nome="Equipa Docente e Horário">

<itemize>

<item> <link pagina="http://www.di.uminho.pt/~jas">João Saraiva</link> 


<par/>

<tabela htmlview="html" bgcolor="white">
<linha>
<elem> Teóricas: </elem> 
<elem> MCC </elem>
<elem> T1 </elem> 
<elem> 2ª Feira - 14:00-15:00 </elem> <elem> sala CP2-102 </elem>
</linha>
<linha>
<elem> </elem> <elem> </elem> <elem> T2 </elem> 
<elem> 4ª Feira - 11:00-12:00 </elem> <elem> sala CP3-103 </elem>
</linha>

<linha>
<elem> Teórica-Prática: </elem> 
<elem> MCC </elem>
<elem> TP1 </elem> 
<elem> 2ª Feira - 15:00-16:00 </elem> 
<elem> sala ??  </elem>
</linha>

<linha>
<elem> </elem> 
<elem> MCC </elem>
<elem> TP2 </elem> 
<elem> 4ª Feira - 09:00-10:00 </elem> 
<elem> sala CP3 205 </elem>
</linha>

<linha>
<elem> Prática: </elem> 
<elem> MCC </elem>
<elem> P1 </elem> 
<elem> 3ª Feira - 09:00-11:00 </elem> 
<elem> sala DI 1.09  </elem>
</linha>

<linha>
<elem> Dúvidas </elem> 
<elem> MCC  </elem>
<elem> </elem> 
<elem> 3ª Feira - 14:00-18:00 </elem> 
<elem> </elem>
</linha>

</tabela>

</item>

<item> <link pagina="http://wiki.di.uminho.pt/wiki/bin/view/Main/TiagoAlves">Tiago Alves</link>
<par/>

<tabela htmlview="html" bgcolor="white">

<linha>
<elem> Prática: </elem> 
<elem> MCC </elem>
<elem> P2 </elem> 
<elem> 3ª Feira - 11:00-13:00 </elem> 
<elem> sala DI 1.09 </elem>
</linha>

<linha>
<elem> Dúvidas </elem> 
<elem> MCC  </elem>
<elem> </elem> 
<elem> ??? </elem> 
<elem> </elem>
</linha>

</tabela>

</item>

</itemize>

</capitulo>


<capitulo nome="Estrutura e Funcionamento">

Exposição da matéria fundamental -- motivação, conceitos, definições,
métodos e justificações -- a nível das aulas teóricas. Resolução de
exercícios de consolidação, a nível das aulas teórico-práticas, no
quadro. Realização no computador, no contexto das aulas práticas, de
exercícios práticos e pequenos projectos. Resolução extra aulas de
dois trabalhos concretos de aplicação, recorrendo às linguagens de
programação Haskell e C.

</capitulo>

<capitulo nome="Objectivos ">

É objectivo deste curso levar os alunos a:

<itemize>

<item> Compreender os conceitos de análise e geração automática de programas.
</item>

<item>  Aprofundar os conceitos de Gramática Independentes do Contexto e a sua utilização na especificação e no desenvolvimento de processadores de linguagens formais.
</item>

<item> Analisar e compreender as diferentes técnicas de parsing: "Top-Down" e "Bottom-Up"
</item>

<item> Analisar e compreender as tarefas de unparsing/pretty priting,
análise de nomes, optimização e geração de código. </item>

<item> Reforçar a aptidão dos alunos para desenvolver programas correctos e eficientes.
</item>

</itemize>

</capitulo>

<capitulo nome="Avaliação">

A Avaliação tem uma componente teórica e uma componente
prática, ambas obrigatórias. 

<par/>

De acordo com o regulamento actualmente em vigor na UM, a <bold>nota
teórica <cor cor="blue">(NT)</cor></bold> será obtida através da realização 
de <bold>1 prova individual escrita</bold>. Essa prova tem as instâncias a 
seguir indicadas (um aluno só poderá fazer melhoria na época de recurso):

<itemize>

<item> Exame, realizado na 1ª chamada da época normal, no fim do 1º
semestre</item>

<item> Exame, realizado na 2ª chamada da época normal, no fim do 1º
semestre </item>

<item> Exame, realizado na época de recurso</item>
</itemize>


A <bold>componente prática</bold> será formada por 2 componentes

<itemize>

<item> 2 trabalhos práticos (<bold><cor cor="blue">P1</cor></bold> e 
<bold><cor cor="blue">P2</cor></bold>) a realizar durante o semestre </item>

<item> Duas provas individuais escrita (<bold><cor cor="blue">PE</cor></bold>) sobre os 
trabalhos práticos com 15 minutos de duração. Esta prova escrita será realizada 
imediatamente depois da entrega dos trabalhos práticos. 
</item>
</itemize>

A  <bold>nota prática (<cor cor="blue">NP</cor></bold>) será obtida de acordo 
com a seguinte fórmula:

<centrar>
<bold> 
<cor cor="blue">NP</cor> =  <cor cor="blue">P1</cor> * 0.4 + 
<cor cor="blue">P2</cor> * 0.4 + <cor cor="blue">PE</cor> * 0.2
</bold>
</centrar>


A nota final será determinada de acordo com a seguinte fórmula:

<par/>

<centrar>
<bold> 
<cor cor="blue">NF</cor> = (<cor cor="blue">NT</cor> + <cor cor="blue">NP</cor>)/2 
</bold>
</centrar>

<bold><cor cor="blue">Exige-se 8 valores como nota mínima em cada uma das partes.</cor></bold>

</capitulo>



<capitulo nome="Programa">

<itemize>

<item> Processamento de Linguagens Formais 
  <itemize>
    <item> Conceitos e exemplos </item>
    <item> Arquitectura dos Processadores de Linguagens </item>
  </itemize>
</item>

<item> Análise Léxica de Linguagens Formais 
  <itemize>
  <item> Conceitos e suas tarefas </item>
  <item> Especificação via Expressões Regulares </item>
  <item> Construção de Analisadores Léxicos basedos em Autómatos Finitos</item>
  <item> Geração Automática de Analisadores Léxicos 
     <itemize> <item> Breve Introdução ao sistema <it> Lex </it> </item>
     </itemize>
  </item>
  </itemize>
</item>


<item> Análise Sintática de Linguagens Formais 

  <itemize>
  <item> Conceitos e suas tarefas </item>

  <item> Especificação da Estrutura de Linguagens via Gramáticas Independentes do Contexto 
     <itemize> 
       <item> Gramáticas/Estruturas Concretas versus Gramáticas/Estruturas Abstractas </item> 
     </itemize>
  </item>

  <item> Representação de Gramáticas no Paradígma Imperativo 
    <itemize>
       <item> De Gramáticas Concrectas para Especificações em <it> Yacc </it>
          <itemize> 
             <item> Breve Introdução ao sistema <it> Yacc </it> </item>
          </itemize>
       </item>
       <item> De Gramáticas Abstractas para Tipos de Dados Estruturados em <it>C  </it></item>
    </itemize>
  </item>

  <item> Técnicas de Parsing 
     <itemize> 
        <item> Parsers Top-Down </item>             
        <item> Parsers Bottom-Up </item>
     </itemize>
  </item>
  </itemize>

</item>


<item> Análise Semântica de Linguagens Formais 

 <itemize>
 <item> Conceitos e Tarefas </item>

 <item> Implementação de Analisadores Semânticos: Problemas e Soluções 
   <itemize>
     <item> Analisadores Semânticos baseados em Multiplas Travessias na Estrutura Abstracta da Linguagem </item>
     <item> "Colagem" de Travessias: A solução Imperativa versus Funcional </item>                
   </itemize>     
 </item>

 </itemize>
</item>

</itemize>

</capitulo>



<capitulo nome="Fichas Teórico-Práticas">


As fichas a realizar em cada aula prática são
disponibilizadas nesta secção. As fichas estarão disponíveis na
sexta-feira da semana anterior à aula a que se destinam.

<itemize>

<item>
<bold>Ficha Teórico-Prática nº 1: 
<cor cor="black"> Expressões Regulares </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha1.lhs">ficha1.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha1.pdf">ficha1.pdf.
</link>
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 2: 
<cor cor="black"> Autómatos Finitos Deterministas </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha2.lhs">ficha2.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha2.pdf">ficha2.pdf.
</link>
  </item>
  </itemize>
</item>
Teaching/Courses/plc/05-06/
<item>
<bold>Ficha Teórico-Prática nº 3: 
<cor cor="black"> Autómatos Finitos Não Deterministas </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha3.lhs">ficha3.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha3.pdf">ficha3.pdf.
</link> (esta ficha usa uma figura que está disponível em <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ndfa.ps">ndfa.ps </link>)
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 4: 
<cor cor="black"> > Conversão de Autómatos Finitos Não Deterministas em Deterministas </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha4.lhs">ficha4.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha4.pdf">ficha4.pdf.
</link>
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 5: 
<cor cor="black"> Conversaõ de Expressões Regulares em Autómatos Finitos Não Deterministas </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/plc/05-06/ficha5.tgz">ficha5.tgz.
                    </link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/plc/05-06/ficha5.pdf">ficha5.pdf.
                    </link> (esta ficha usa várias figuras, daí o ficheiro tgz).
  </item>
  </itemize>
</item>

<item>
<bold>Ficha Teórico-Prática nº 6: 
<cor cor="black"> Lex: Um gerador de Analisadores Léxicos </cor>
</bold>
  <itemize>
  <item><it>literate programming: noweb</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha6.nw">ficha6.nw.
                    </link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha6.pdf">ficha6.pdf.
                    </link> (para processraem o texto LaTeX necssitamo estilo noweb, disponível em  <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/noweb.sty">noweb.sty</link>).
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 7: 
<cor cor="black"> Gramáticas Independentes do Contexto em Haskell </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha7.lhs">ficha7.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha7.pdf">ficha7.pdf.
</link>
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 8: 
<cor cor="black"> Propriedades de Gramáticas Independentes do Contexto </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha8.lhs">ficha8.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha8.pdf">ficha8.pdf.
</link>
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 9: 
<cor cor="black"> Gramáticas Independentes do Contexto em Yacc </cor>
</bold>
  <itemize>
  <item>
    <it>(disponível em breve)</it>
  </item>
  </itemize>
</item>


<item>
<bold>Ficha Teórico-Prática nº 10: 
<cor cor="black"> Árvores de Sintaxe Abstractas em C </cor>
</bold>
  <itemize>
  <item>
     <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/ficha10.tgz">ficha10.tgz</link>
  </item>  
  </itemize>
</item>


</itemize>

</capitulo>



<capitulo nome="Software">


O seguinte software utilizado/recomendado nesta disciplina está 
já disponível:

<itemize>


<item> <cor cor="black"><bold>Expressões Regulares:</bold></cor>
        
O sistema <it>HaLeX</it> está disponível na página oficial do sistema 
<link href="http://www.di.uminho.pt/~jas/Research/HaLeX/HaLeX.html">
HaLeX.html </link> e em <link
href="http://www.di.uminho.pt/~jas/Research/HaLeX/HaLeX_1.1.tgz">
HaLeX_1.1.tgz
</link>.

</item>

<item> <cor cor="black"><bold>Gramáticas Independentes do Contexto:</bold></cor>
        
O Sistema HaGLR: Disponível em breve.

</item>

<item> <cor cor="black"><bold>Árvores de Síntaxe Abstractas:</bold> </cor>
       Sistema Gram2C: Um Gerador de Árvores Abstractas em C

     <itemize>
       <item> O Gram2C utiliza o Bohem's Garbage Collector (ver abaixo)
        </item>

       <item> Este gestor de memória é distribuído com o Gram2C 
              <it>(logo, instalando o Gram2C, instala-se também o gc!)</it>
       </item>

       <item> código fonte: 
               <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/Gram2C.tgz">Gram2C.tgz</link>        
       </item>
     </itemize>

</item>

<item> <cor cor="black"><bold>Máquinas Virtuais:</bold> </cor>


     <itemize>
       <item> MSP - Um máquina de assembly muito simples:

             <itemize>
             <item> O Simulador WinMSP: <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/WinMSP.tgz">WinMSP.tgz</link> 
             </item> 
             <item> <it>O WinMSP é distribuído em binário para o SO Windows. Para
                     o executar em Linux devem instalar o sistema wine : </it>
                    <link href="http://www.winehq.com/">Wine</link> 
             </item> 

             <item>
                   <it> Regras de Conversão de esturturas condicionais e ciclicas
                        para MSP: </it>
                    <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/msp.ps">msp.ps</link> 
             </item>

             </itemize>
       </item>

       <item> SPIM - A MIPS32 Simulator

               <itemize>
               <item> homepage: 
               <link href="http://www.cs.wisc.edu/~larus/spim.html">SPIM</link> 
               </item>
               </itemize>
       </item>

     </itemize>

</item>



<item> <cor cor="black"><bold>Gestão de Memória:</bold></cor>
       O Gestor de Memória Boehm-Demers-Weiser para C/C++

   <itemize>
   <item> Página:
      <link pagina="http://www.hpl.hp.com/personal/Hans_Boehm/gc/"> 
      A garbage collector for C and C++
       </link>
   </item>
   </itemize>

</item>


<item> <cor cor="black"><bold>Literate Programming:</bold></cor>
       O Sistema de Literate Programming NoWeb

  <itemize>
  <item> Página do Sistema Noweb:
      <link pagina="http://www.eecs.harvard.edu/~nr/noweb/"> NoWeb Homepage
      </link>
  </item>
  </itemize>

</item>




</itemize>


</capitulo>


<capitulo nome="Contribuições dos Alunos">

Soluções dos trabalhos práticos apesentados:

<itemize>

<item> 1º Trabalho Prático:

   <itemize>
   <item> Grupo constituído por: Alice Marques (43525), Ana Duarte
(43540) e Nélio Guimarães (43535). Resolução: <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp1_Alice_Ana_Nelio.tgz"> solução do 1º trabalho prático </link> </item>
</itemize>

</item>


<item> 2º Trabalho Prático:

   <itemize>
   <item> Grupo constituído por: Bruno Lopes (43542) e Miguel Veiga
(41045). Resolução: <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp2_Bruno_Miguel.tgz">
solução do 2º trabalho prático </link> 
   </item> 
   </itemize>

</item>

</itemize>







</capitulo>


<capitulo nome="Notas & Exames">

O enunciado( em versão electrónica) dos exames propostos neste ano
lectivo foram:


<itemize>

<item> <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/jul1a_05_06.pdf"> 1ª Chamada (19/06/06) </link></item>

<item> <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/jul2a_05_06.pdf"> 2ª Chamada (03/07/06) </link></item>

</itemize>



<cor cor="black"><bold> Os resultados finais obtidos pelos alunos
estão disponíveis <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/Notas_Finais_PLC.html">aqui</link>.</bold></cor>

<br/>

<cor cor="black"><bold> Os resultados finais incluindo a época de
recurso estão disponíveis <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/Notas_Recurso.html">aqui</link>.</bold></cor>




</capitulo>




<capitulo nome="Trabalhos Práticos">



Os trabalhos práticos propostos são os seguintes:

<itemize>

<item>
<bold>Trabalho Prático nº 1: 
<cor cor="black"> Processador de Gramáticas </cor>
</bold>
  <itemize>
  <item><it>literate programming</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp1.nw">tp1.nw.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp1.pdf">tp1.pdf.
</link>
  </item>
  </itemize>
</item>


<item>
<bold>Trabalho Prático nº 2: 
<cor cor="black"> Um Interpretador da Linguagem BC--  </cor>
</bold>
  <itemize>
  <item><it>ficheiros fonte</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp2.tgz">tp2.tgz.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/tp2.pdf">tp2.pdf.
</link>
  </item>
  </itemize>
</item>

</itemize>


<it><cor cor="black"> Os resultados dos trabalhos práticos estão
disponíveis</cor> </it> <link
href="http://www.di.uminho.pt/~jas/Teaching/Courses/plc/05-06/notas_tp_defesa.html">aqui
</link>.


</capitulo>



<capitulo nome="Sumários">


A definir

</capitulo>



<biblio erros="sim" ordenado="default">



<livro key="appelC">
  <tit> Modern Compiler Implementation in C: basic techniques </tit>
  <aut> Andrew W. Appel </aut>
  <editora> Cambridge University Press </editora>
  <ano> 1997 </ano>
</livro>


<livro key="appelML">
  <tit> Modern Compiler Implementation in ML: basic techniques </tit>
  <aut> Andrew W. Appel </aut>
  <editora> Cambridge University Press </editora>
  <ano> 1997 </ano>
</livro>


<livro key="ASU">
  <tit> Compilers: Principles, Techniques and Tools </tit>
  <aut> Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman </aut>
  <editora> Addison-Wesley </editora>
  <ano> 1986 </ano>
</livro>


<livro key="jas00">
  <tit>      Language Processing (with a Functional Flavour)       </tit>
  <aut>      João Saraiva                                          </aut>
  <ano>      2000                                                  </ano>
  <editora>  DI/UM                                             </editora>
  <edicao>   1ª                                                 </edicao>
</livro>
  

<livro key="jas95">
  <tit>      Especificação e Processamento de Linguagens           </tit>
  <aut>      João Saraiva                                          </aut>
  <ano>      1995                                                  </ano>
  <editora>  DI/UM                                             </editora>
  <edicao>   1ª                                                 </edicao>
  <urlps>    http://www.di.uminho.pt/~jas/mp3/esp_proc_ling.ps.gz  </urlps>
  <urlhtml>  http://www.di.uminho.pt/~jas/Teaching/LectureNotes/espprocling.html </urlhtml>
</livro>
  
<livro key="WC93">
  <tit> An Introduction to Compiler Construction </tit>
  <aut>  William M. Waite and Lynn R. Carter </aut>
  <editora> Harper Collins </editora>
  <ano> 1993 </ano>
</livro>


<artigo key="Niemman">
  <tit> A Compact Guide to Lex & Yacc </tit>
  <aut> Thomas Niemman </aut>
  <urlpdf>  http://epaperpress.com/lexandyacc/download/lexyacc.pdf </urlpdf>  
  <urlhtml> http://epaperpress.com/lexandyacc/  </urlhtml>
</artigo>


<artigo key="Lex75">
  <tit> Lex - A Lexical Analyzer Generator. </tit>
  <aut> M. E. Lesk and E. Schmidt  </aut>
  <editora> Computing Science Technical Report No. 39, Bell Laboratories, Murray hill, New Jersey </editora>
  <urlpdf> http://epaperpress.com/lexandyacc/download/lex.pdf </urlpdf>  
  <ano> 1975 </ano>
</artigo>

<artigo key="Johnson75">
  <tit>  Yacc: Yet Another Compiler Compiler </tit>
  <aut> Stephen C. Johnson  </aut>
  <editora> Computing Science Technical Report No. 32, Bell Laboratories, Murray hill, New Jersey </editora>
  <urlpdf> http://epaperpress.com/lexandyacc/download/yacc.pdf </urlpdf>  
  <ano> 1975 </ano>
</artigo>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/mp3/05-06/ficha5.tgz">ficha5.tgz.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/mp3/05-06/ficha5.pdf">ficha5.pdf.
</link> (esta ficha usa várias figuras, daí o ficheiro tgz).
  </item>
<livro key="FB94">
  <tit> lex & yacc </tit>
  <aut> John Levine, Tony Mason and Doug Brown </aut>
  <editora> O'Reilly & Associates, Inc </editora>
  <ano> 1992 </ano>
</livro>


<artigo key="Saraiva02a">
  <aut> João Saraiva </aut>
  <tit>  HaLeX: A Haskell Library to Model, Manipulate and Animate Regular Languages </tit>
  <editora> ACM Workshop on
Functional and Declarative Programming in Education (FDPE/PLI'02),
Pittsburgh, USA, </editora>
 <ano> 2002 </ano>  
  <urlps> http://www.di.uminho.pt/~jas/Research/Papers/FDPE02/fdpe02.ps.gz </urlps> 
  <urlhtml> http://www.di.uminho.pt/~jas/Research/HaLeX/HaLeX.html</urlhtml>

</artigo>


<livro key="ullman01">
  <tit>     Introduction to Automata Theory, Languages and Computation </tit>
  <aut>     John Hopcroft, Rajeev Motwani and Jeffrey Ullman           </aut>
  <ano>      2001                                                  </ano>
  <editora> Addison-Wesley                                         </editora>
  <edicao>  2nd Edition                                            </edicao>
  <urlhtml>    http://www-db.stanford.edu/~ullman/ialc.html          </urlhtml>
</livro>



<livro key="FB94">
  <tit> The Language of Machines: An Introduction to Computability and Formal Languages </tit>
  <aut> R. Floid and R. Beigel </aut>
  <editora> Computer Science Press </editora>
  <ano> 1994 </ano>
</livro>

<artigo key="haskellRep">
  <tit>     Report on the Programming Language Haskell 98              </tit>
  <aut>     S.P.Jones, et al                                           </aut>
  <ano>     1999                                                       </ano>
  <urlhtml> http://www.haskell.org/onlinereport                    </urlhtml>
  <urlps>   http://www.haskell.org/definition/haskell98-report.ps.gz </urlps>
  <urlpdf>  http://www.haskell.org/definition/haskell98-report.pdf  </urlpdf>
</artigo>


<livro key="Bird98">
  <tit> Introduction to Functional Programming using Haskell </tit>
  <aut> R. Bird </aut>
  <editora> Prentice Hall </editora>
  <ano> 1998 </ano>
</livro>

<livro key="SimonThompson99">
  <tit> Haskell - The Craft of Functional Programming </tit>
  <aut> S. Thompson </aut>
  <editora> Addison-Wesley </editora>
  <ano> 1999 </ano>
  <edicao> 2ª </edicao>
</livro>


<livro key="NeilJones93">
  <tit> Partial Evaluation and Automatic Program Generation </tit>
  <aut> N. Jones, C. Gomard and P. Sestoff </aut>
  <editora> Prentice Hall </editora>
  <ano> 1993 </ano>
  <urlhtml> http://www.dina.kvl.dk/~sestoft/pebook/pebook.html     </urlhtml>
</livro>


<livro key="Horowitz84">
  <tit> Fundamentos de Estruturas de Dados </tit>
  <aut> E. Horowitz and S. Sahni </aut>
  <editora> Editora Campus </editora>
  <ano> 1984 </ano>
</livro>




</biblio>


</documento>



