Criar um compilador em python ou Java

Job ID: 37382686

Budget: $10 – $30 USD

Implementação do compilador SIMPLE/SML - fase de síntese
Desenvolver a fase de síntese (código intermediário, se necessário, gerência de memória e código objeto) do compilador para a linguagem de programação SIMPLE.

Observações:
1. o compilador poderá ser desenvolvido individualmente, ou no máximo, em dupla:
1.1. caso o compilador seja desenvolvido em dupla, postar a resposta no
classroom somente uma vez, e indicar os componentes da dupla.

2. o compilador poderá ser desenvolvido na linguagem de programação de sua
preferência, desde que seja open source e esteja disponível no Ubuntu 22.04.
2.1. anexar o código-fonte e as instruções para a compilação e execução do compilador;
2.2. não serão aceitos arquivos fonte com extensão diferente da linguagem de programação utilizada.

3. caso seja identificado compiladores idênticos ou muito parecidos entre
os grupos (como por exemplo pelo controle de plágio, originalidade
disponibilizado pelo classroom), ambos serão desconsiderados.

4. a avaliação do compilador será realizada com a submissão de quatro
códigos-fonte escritos na linguagem de programação SIMPLE
4.1. cada código-fonte cujo código objeto seja executado corretamente valerá 1,0 ponto.

5.conforme o plano de ensino, o desenvolvimento do compilador vale 2,0
pontos na nota da Segunda Avaliação, de modo que a nota a ser lançada
na consolidação da Segunda Avaliação será a nota do classroom dividido
por 2.

6. Segue um exemplo do arquivo de entrada fornecido (escrito na linguagem SIMPLE) e do arquivo de saída esperado (produzido pelo compilador na linguagem SML).


entrada:
10 input n
15 if n < 0 goto 45
20 let f = 1
25 if n < 2 goto 50
30 let f = f * n
35 let n = n - 1
40 goto 25
45 let f = -1
50 print f
55 end

saida:

+1014
+2014
+4110
+4212
+3315
+2115
+2014
+3016
+2114
+4003
+1116
+4300
+1115
+4300
+0000
+0001
-0001