(→Compilador "Simple") |
(→Compilador "Simple") |
||
Line 20: | Line 20: | ||
A definição da linguagem Simple pode ser obtida por inspecção do código, especialmente estudando o léxico e a gramática. | A definição da linguagem Simple pode ser obtida por inspecção do código, especialmente estudando o léxico e a gramática. | ||
− | + | <!-- | |
− | {{Aviso|Note-se que a compilação de algumas versões do compilador Simple num ambiente que não o recomendado pode requerer a pré-instalação dos pacotes relativos ao LLVM. O ambiente recomendado já contém todas as dependências necessárias.}} | + | {{Aviso|Note-se que a compilação de algumas versões do compilador Simple num ambiente que não o recomendado pode requerer a pré-instalação dos pacotes relativos ao LLVM. O ambiente recomendado já contém todas as dependências necessárias.}}--> |
=== Compilador "Compact" (descontinuado -- utilizar o "Simple") === | === Compilador "Compact" (descontinuado -- utilizar o "Simple") === |
AVISOS - Avaliação em Época Normal |
---|
Esclarecimento de dúvidas:
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
|
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 GIT |
Apenas se consideram para avaliação os projectos existentes no repositório GIT oficial. Apenas se considera para avaliação o ramo main.
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. |
O compilador Simple exemplifica a utilização das bibliotecas de apoio. Este compilador suporta expressões básicas com inteiros, permite apresentá-los na saída e permite obtê-los a partir do utilizador. Permite ainda a apresentação de cadeias de caracteres.
Apesar de permitir estruturas de controlo, tais como ciclos while e instruções if-then-else, não permite a definição de funções e todas as variáveis são obrigatoriamente inteiras e globais.
O compilador faz uma gestão básica da utilização de variáveis declaradas (i.e., são declaradas na primeira atribuição).
O código do compilador Simple pode ser obtido aqui:
A definição da linguagem Simple pode ser obtida por inspecção do código, especialmente estudando o léxico e a gramática.
O compilador Compact suportava uma versão primitiva da linguagem Simple, em que não havia necessidade de verificação de tipos, pois não era possível misturá-los. Esta opção, embora funcional, não é a mais elegante/flexível e foi removida no compilador Simple. Como consequência, em Simple é necessário verificar a coerência dos operadores e dos seus operandos relativamente aos tipos. Além disso, em Compact a atribuição era uma operação e não uma expressão. Em Simple, a atribuição é uma expressão e as noções de left-value e right-value estão definidas de forma mais elegante.
O compilador pf2asm permite escrever e compilar directamente código Postfix. É também um exemplo de uso do material de apoio. Este compilador é de utilização opcional (é independente da realização do projecto), mas pode ser útil para a realização de testes de protótipos de geração de código Postfix.
Este compilador pode ser obtido aqui: