-
Notifications
You must be signed in to change notification settings - Fork 39
/
Copy path3136.poti
33 lines (32 loc) · 963 Bytes
/
3136.poti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
n = leia_inteiro
var pilha : Lista[Inteiro] := []
var registrador := Lista(100, 0)
reg(comando: Lista[Texto]) = comando[2].cauda.inteiro + 1
para i de 1 até n faça
comando = leia_textos("_")
escolha comando[1]
caso "push" se comando[2][1] == 'R' =>
pilha := registrador[reg(comando)] :: pilha
caso "push" =>
pilha := comando[2].inteiro :: pilha
caso "pop" =>
a = pilha.cabeça
pilha := pilha.cauda
registrador[reg(comando)] := a
caso "add" =>
a, b = pilha[1], pilha[2]
pilha := (a + b) :: pilha.descarte(2)
caso "mul" =>
a, b = pilha[1], pilha[2]
pilha := (a * b) :: pilha.descarte(2)
caso "div" =>
a, b = pilha[1], pilha[2]
pilha := (b div a) :: pilha.descarte(2)
caso "sub" =>
a, b = pilha[1], pilha[2]
pilha := (b - a) :: pilha.descarte(2)
caso _ =>
escreva pilha[1]
pilha := pilha.cauda
fim
fim