Underload/a interpreter in Uiua
Jump to navigation
Jump to search
This is a Underload interpreter in Uiua written by User:Jan jelo
C ← ⊂:□:⊂⊂{}∩□
State ← C0{"aa""b""c"}
I ← °□⊡0
S ← °□⊡1
P ← °□⊡2
# * (Join)
J ← C I:⊂:↘2:□⊂°□⊡0:°□⊡1..S.:↘1P.
# a (A)
A ← C I:⊂:↘1:□$"(_)"°□⊡0.S.:↘1P.
# ~ (Flip)
F ← C I:⊂⊂⊂{}⊡1:⊡0.:↘2.S.:↘1P.
# : (Dup)
D ← C I:⊂⊡0.S.:↘1P.
# ! (pOp)
O ← C I:↘1S.:↘1P.
# S (ouT)
T ← &pf°□⊡0S:O∘.
# ^ (Eval)
E ← C I:↘1S.:⊂°□⊡0S:↘1P..
BStep ← ⨬(
C+1I:⊂□⊂°□⊡0S:⊡0P.:↘1S..:↘1P.
| ⨬(C-1I:⊂□⊂°□⊡0S:⊡0P.:↘1S..:↘1P.
| C I:⊂□⊂°□⊡0S:⊡0P.:↘1S..:↘1P.
)≠@)⊡0P.
)≠@(⊡0P.
B ← C I:⊂□⇌↘1⇌°□⊡0:↘1.S.:P∘.⍢(
BStep
| ≠0I
)C1⊂{""}S:↘1P.
RunStep ← ⍣(
J°@*
| A°@a
| F°@~
| D°@:
| O°@!
| T°@S
| E°@^
| B°@(
)⊡0P.
Run ← ◌⍢(
RunStep
| >0⧻P
)State
Run"(:aSS):aSS"
#(:aSS):aSS