Skip to content

Instantly share code, notes, and snippets.

@ZoomTen
Created March 10, 2024 12:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ZoomTen/b4471137bce7d711f037c5e5702b21db to your computer and use it in GitHub Desktop.
Save ZoomTen/b4471137bce7d711f037c5e5702b21db to your computer and use it in GitHub Desktop.
lol
import terjemahkan
jadikan:
n = 10
untuk i dari 1..2:
jadikan: j = n + i
variabel:
a = 10
cetak "j itu ", j
cetak "a skrg ", a
a += 11
cetak "a jadi ", a
import std/macros
macro untuk* (j, n: untyped): untyped =
let
varTujuan = j[0]
stmtDalam = j[1]
isiStmtDalam = stmtDalam[1]
var
l = newStmtList()
f = newNimNode(nnkForStmt)
b = newStmtList()
for k in n:
b.add(k)
f.add(varTujuan)
f.add(isiStmtDalam)
f.add(b)
l.add(f)
return l
macro jadikan* (n: untyped): untyped =
var
l = newStmtList()
ls = newNimNode(nnkLetSection)
l.add(ls)
for i in n:
var
p = newNimNode(nnkIdentDefs)
targ = i[0]
val = i[1]
p.add(targ)
p.add(newNimNode(nnkEmpty))
p.add(val)
ls.add(p)
# TODO: tuple assignment
return l
macro variabel* (n: untyped): untyped =
var
l = newStmtList()
ls = newNimNode(nnkVarSection)
l.add(ls)
for i in n:
var
p = newNimNode(nnkIdentDefs)
targ = i[0]
val = i[1]
p.add(targ)
p.add(newNimNode(nnkEmpty))
p.add(val)
ls.add(p)
# TODO: tuple assignment
return l
template cetak* (n: varargs[untyped]) =
debugEcho(n)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment