Compiladores/Projecto de Compiladores/Material de Apoio ao Desenvolvimento
From Wiki**3
< Compiladores | Projecto de Compiladores
Etapas de Análise de uma Lingugagem
O compilador, escrito em C++, realiza as seguintes etapas de análise para implementar a linguagem:
- análise lexical (flex);
- análise sintáctica (byacc);
- análise semântica e geração de código (CDK, RTS e extensões); e
- compilação de assembly.
Análises Lexical e Sintáctica: Flex e BYACC
Estas duas etapas são realizadas pelas seguintes ferramentas:
- análise lexical: gerador de analisadores lexicais: flex versão 2.5.37
- análise sintáctica: gerador de analisadores LALR(1): byacc versão 1.9
O código por elas produzido é, então, incorporado pela CDK no compilador em construção, sendo ligado automaticamente às restantes etapas.
As duas ferramentas estão disponíveis para a maioria dos sistemas actuais. No entanto, apesar de o número de versão poder ser o mesmo, o código gerado pode variar e não ser compatível com o ambiente oficial de teste. Recomenda-se apenas a utilização do material fornecido pela disciplina.
A máquina virtual, fornecida para desenvolvimento do projecto, já contém estas ferramentas.
Análise semântica e geração de código: CDK10
Estas duas etapas são realizadas pelas classes da biblioteca CDK10, utilizando os padrões de desenho Composite (para representação dos nós da AST, criados pela etapa de análise sintáctica) e Visitor (classes que controlam as acções de verificação de tipos e geração de código).
A máquina virtual, fornecida para desenvolvimento do projecto, já contém esta biblioteca.
Compilação de código assembly para código binário: yasm
Esta fase já não é, estritamente, parte do processo de compilação (este termina quando é gerado o código máquina). No entanto, esta etapa é importante para se poderem obter programas executáveis.
A conversão do ficheiro assembly, produzido pelo compilador, num módulo binário é realizada pela ferramenta yasm, sendo utilizado o formato de linux/elf32.
A máquina virtual, fornecida para desenvolvimento do projecto, já contém esta ferramenta.
Pacotes binários para instalação (openSUSE 13.2)
O manterial de apoio está disponível para instalação directa (não é necessário compilar) através do repositório (usar instalador favorito) [1] (escolher distribuição ou usar openSUSE 13.2, a oficial).
Máquina virtual
Está ainda disponível uma máquina virtual (baseada em openSUSE 13.2), que contém todo o material acima.