O compilador, escrito em C++, realiza as seguintes etapas de análise para implementar a linguagem:
Depois de criado, o compilador pode ser obtido para gerar programas:
Estas duas etapas são realizadas pelas seguintes ferramentas:
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.
Estas duas etapas são realizadas pelas classes da biblioteca CDK12, 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).
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 ligação dos módulos binários num programa executável (linking) é realizada pelo linker (em Linux, pelo programa GNU ld, incorporado em todas as distrubuições).
Além dos módulos que transportam o código do programador, traduzido para código máquina, é necessária a biblioteca RTS, que providencia ao programa as funções necessárias para interacção do programa com o ambiente de execução e com o utilizador (ver também o manual da RTS).