Universidade de Évora

Departamento de Informática

Construção e Optimização de Compiladores

2004/2005

Exame época especial
Data final de entrega: 26/9/2005
Modo de entrega: via email para pq@di.uevora.pt


Implemente o seu melhor optimizador de código intermédio.
O código intermédio a optimizar é constituído por uma sequência de instruções (quádruplos) no seguinte formato:
 
        id <- id_n op id_n
        id <- id_n
        id <- M[id_n]
        M[id_n] <- id_n
        goto label
        label:
        if id_n op_rel id_n goto label else goto label
        id(id_n, ..., id_n)
        id <- id(id_n,...,id_n)

De acordo com as seguintes definições:
        id <- [a-zA-Z]+
        n <- [0-9]+
        id_n <- id | n
        label <- id
        op <- + | - | * | /
        op_rel <-  < | > | <= | >= | = | !=

O optimizador deverá receber como input um ficheiro de texto constituído por uma sequência de instruções no formato descrito anteriormente (uma instrução por linha) e deverá produzir como output o correspondente programa já optimizado (e com o mesmo formato).
Deverá entregar o código desenvolvido, um makefile, 3 ficheiros que ilustrem as optimizações implementadas e um relatório que descreva o trabalho realizado.

Bom exame!