summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSuleyman Farajli <suleyman@farajli.net>2024-12-26 16:10:54 +0400
committerSuleyman Farajli <suleyman@farajli.net>2024-12-26 16:10:54 +0400
commit6a5db026b93b97879ec7a5d15c1f0047b13c6083 (patch)
tree2765757cb9a5441336067cb3ff8b13d7cfbe5bf4 /src
parent356b4cccdd5889f366dd9932a7566175dd37c0c6 (diff)
`else` added to `if`
Diffstat (limited to 'src')
-rw-r--r--src/main.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main.go b/src/main.go
index b6e4c23..fe73108 100644
--- a/src/main.go
+++ b/src/main.go
@@ -74,11 +74,19 @@ func compile(raw[]string) {
print(" ;; IF")
print(" pop r10")
print(" cmp r10, 0")
- fmt.Printf(" je .if%d\n",i)
+ fmt.Printf(" je .if%d\n", i)
+ iflabels = append(iflabels, i)
+
+ case "else":
+ print(" ;; ELSE")
+ fmt.Printf(" jmp .if%d\n", i)
+ fmt.Printf(".if%d:\n", iflabels[len(iflabels) - 1])
+ iflabels = iflabels[:len(iflabels) - 1]
iflabels = append(iflabels, i)
case "endif":
- fmt.Printf(".if%d:\n", iflabels[len(iflabels) - 1] )
+ print(" ;; ENDIF")
+ fmt.Printf(".if%d:\n", iflabels[len(iflabels) - 1])
iflabels = iflabels[:len(iflabels) - 1]
default: