StackX
Jump to navigation
Jump to search
StackX is a stack-based golfing programming language influenced by Getchl, Befunge, ><> and 05AB1E.
Command List
| Charcode | Unicode | Instruction | Meaning |
|---|---|---|---|
| 32 | Space | Nothing | NOP |
| 33 | ! | Not | 0 and NaN become 1, everything else becomes 0 |
| 34 | " | String | Push Unicode of all characters up to the next " |
| 35 | # | Pop x, print x | |
| 36 | $ | Drop | Pop x and discard |
| 37 | % | Remainder | Pop x and y, push y%x |
| 38 | & | Input | Get a single numeric value from input (NaN on EOF) |
| 39 | ' | Char | Pushes charcode of next character |
| 40 | ( | Block | Starts a code block |
| 41 | ) | Block End | Ends a code block |
| 42 | * | Multiply | Pop x and y, push y*x |
| 43 | + | Add | Pop x and y, push y+x |
| 44 | , | Print Character | Pop x, print Unicode character whose value is x (rounded down). Error if negative, infinite or NaN. |
| 45 | - | Subtract | Pop x and y, push y-x |
| 46 | . | Decimal Point | Denotes decimal point in number literals |
| 47 | / | Divide | Pop x and y, push y/x |
| 48-57 | 0-9 | Digits | Used in number literals |
| 58 | : | Duplicate | Pop x, push x and x |
| 59 | ; | Shift | Enter shift mode for the next character |
| 60 | < | Back | Pop x, go back on the tape by x |
| 61 | = | Execute | Pop 0gnirts, execute as system command (no equal command because of subtraction) |
| 62 | > | Forward | Pop x, go forward on the tape by x |
| 63 | ? | If | Do last command/codeblock unless top of stack is 0 or NaN |
| 64 | @ | While | Do last command/codeblock until top of stack is 0 or NaN |
| 65 | A | A | Pop x, set register A to x |
| 66 | B | B | Pop x, set register B to x |
| 67 | C | C | Pop x, set register C to x |
| 68 | D | D | Pop x, set register D to x |
| 69 | E | E | Push 2.71828... |
| 70 | F | Fizzbuzz | Pop x, print fizzbuzz until x |
| 71 | G | Get | Pop x, push charcode of xth character in code (newlines ignored, space pushes 0, overflow pushes NaN) |
| 72 | H | Hello World | Print "Hello World" |
| 73 | I | Infinity | Push positive infinity |
| 74 | J | Loop Counter | Push loop counter, NaN if outside for loop |
| 75 | K | ||
| 76 | L | Length | Push the number of values on the stack |
| 77 | M | Memory | Pop x, set accumulator to x |
| 78 | N | Ninety Nine Bottes | Print 99 bottles of beer lyrics |
| 79 | O | Over | Pop n, duplicate the nth stack item |
| 80 | P | Put | Pop x, n, set the nth command to Unicode character x |
| 81 | Q | Quine | Push 81 (I'm sorry) |
| 82 | R | Run | Pop 0gnirts, run it as StackX code |
| 83 | S | ||
| 84 | T | Truth Machine | Pop x, print 0 if x is 0, print 1 forever if x is 1 |
| 85 | U | ||
| 86 | V | ||
| 87 | W | ||
| 88 | X | X | Pop x, set register X to x |
| 89 | Y | Y | Pop x, set register Y to x |
| 90 | Z | Sleep | Pop x, sleep of x milliseconds |
| 91 | [ | Rotate | Pop a, b, c, push a, c, b |
| 92 | \ | Swap | Pop a, b, push a, b |
| 93 | ] | Rotatecc | Pop a, b, c, push b, a, c |
| 94 | ^ | Power | Pop a, b, push b**a |
| 95 | _ | Negate | Pop x, push -x |
| 96 | ` | Eval | Pop 0ginrts, run it through JS eval(), then push the stringified result.
|
| 97 | a | a | Push register A value |
| 98 | b | b | Push register B value |
| 99 | c | c | Push register C value |
| 100 | d | d | Push register D value |
| 101 | e | equals | Pop x, y, if x==y and neither is NaN, push 1, else push 0 |
| 102 | f | find | Pop x, pop y repeatedly until y=x |
| 103 | g | goto | Pop x, jump to label x |
| 104 | h | hundred | Push 100 |
| 105 | i | increment | Pop x, push x+1 |
| 106 | j | decrement | Pop x, push x-1 |
| 107 | k | ||
| 108 | l | label | Pop x, label as goto location |
| 109 | m | memory | Push accumulator value |
| 110 | n | nan | Push NaN |
| 111 | o | ||
| 112 | p | pi | Push 3.14159... |
| 113 | q | queue | Turn stack into queue (another q turns it back into a stack) |
| 114 | r | reverse | Reverse the stack |
| 115 | s | sign | Pop x, push sign of x (NaN if x is NaN) |
| 116 | t | ten | Push 10 |
| 117 | u | up | Move bottom value up (roll operation in queue mode) |
| 118 | v | down | Move top value down |
| 119 | w | Example | Example |
| 120 | x | x | Push register X value |
| 121 | y | y | Push register Y value |
| 122 | z | done | End program without implicit output or break out of loop |
| 123 | { | To String | Pop x, convert it into 0gnirts and push |
| 124 | | | Define | Pop x, define corresponding function as previous command or block |
| 125 | } | To Number | Pop 0gnirts, convert it into number using Javascript Number()
|
| 126 | ~ | Input Character | get a single charcode from input (-1 on EOF) |
| 161 | ¡ 00 | Open | Pop 0gnirts, open the corresponding file |
| 162 | ¢ 01 | Read | Pop 0gnirts, read the content and push |
| 163 | £ 02 | Write | Pop 0gnirts s and t, write t to file s |
| 164 | ¤ 03 | Replace | Pop strings s, t and u, then replace s with t in u, push u |
| 165 | ¥ 04 | Concatenate | Pop string s and t, concatenate and push the result |
| 166 | ¦ 05 | Function | Pop x, run function x |
| 167 | § 06 | Sequence Product | Pop 0gnirts, a, concatenate 0gnirts a (rounded down) times, then push it back |
| 168 | ¨ 07 | Infinite Loop | Repeat the last command/codeblock infinitely |
| 169 | © 08 | 32 More | Pop x, push x+32 |
| 170 | ª 09 | 32 Less | Pop x, push x-32 |
| 171 | « 10 | Left Shift | Pop x, push 2x |
| 172 | ¬ 11 | 64 More | Pop x, push x+64 |
| 174 | ® 12 | 64 Less | Pop x, push x-64 |
| 175 | ¯ 13 | Numbered Shift | Pop x, toggle n-tuple shift mode for next command |
| 176 | ° 14 | Power Of Ten | Pop x, push 10**x |
| 177 | ± 15 | Sign | Pop x, push sign of x (NaN if x is NaN) |
| 178 | ² 16 | Square | Pop x, push x**2 |
| 179 | ³ 17 | Cube | Pop x, push x**3 |
| 180 | ´ 18 | Greater Than | Pop x, y, push 1 if y>x, else push 0 |
| 181 | µ 19 | Split | Pop strings s and t, split t by s, then push every item. |
| 182 | ¶ 20 | Carriage Return | Push 13 |
| 183 | · 21 | ||
| 184 | ¸ 22 | ||
| 185 | ¹ 23 | Reverse | Pop string s, push its reverse |
| 186 | º 24 | Mirror Machine | Execute a mirror machine |
| 187 | » 25 | Right Shift | Pop x, push x/2 |
| 188 | ¼ 26 | For Loop From One | Pop x, do last command/block for (J=1; J<=x; J++) |
| 189 | ½ 27 | For Loop From Zero | Pop x, do last command/block for (J=0; J<=x; J++) |
| 190 | ¾ 28 | For Loop With Range | Pop x, y, do last command/block for (J=y; J<=x; J++) |
| 191 | ¿ 29 | Factorial | Pop x, push x! |
| 192 | À 30 | Is Even | Pop x, push 1 if a % 2 == 0 else 0 |
| 193 | Á 31 | Is Odd | Pop x, push 1 if a % 2 == 1 else 0 |
| 194 | Â 32 | Is Prime | Pop x, if x is prime, push 1, else push 0 |
| 195 | Ã 33 | Is Integer | Pop x, push 1 if x % 1 == 0, else push 0 |
| 196 | Ä 34 | Regex Match | Pop regex r, string s, push all matches of r in s |
| 197 | Å 35 | Å | Push 197 (I'm sorry again) |
| 198 | Æ 36 | All The Same | Push 1 if no duplicates in stack (NaN == NaN here), else 0 |
| 199 | Ç 37 | Clear All Registers | A = B = C = D = M = X = Y = NaN |
| 200 | È 38 | Exponential | Pop x, push e**x |
| Charcode | Unicode | Instruction | Meaning |
|---|---|---|---|
| 201 | É 39 | Natural Logarithm | Pop x, push ln(x) |
| 202 | Ê 40 | Is Not Numeric | Pop string s, push 1 if isNaN(s), else 0 |
| 203 | Ë 41 | Fraction | Pop x, push x as a fraction (0gnirts) Infinity = '1/0', NaN = '0/0'. |
| 204 | Ì 42 | Ten More | Pop x, push x+10 |
| 205 | Í 43 | Ten Less | Pop x, push x-10 |
| 206 | Î 44 | Absolute Value | Pop x, push abs(x) |
| 207 | Ï 45 | Random Number | Push random integer from 1 to Number.MAX_SAFE_INTEGER |
| 208 | Ð 46 | Copy | Pop x, y, push y x times |
| 209 | Ñ 47 | Ñ | Push 209 (I'm sorry again) |
| 210 | Ò 48 | Times 10 | Pop x, push 10x |
| 211 | Ó 49 | Divide By 10 | Pop x, push x/10 |
| 212 | Ô 50 | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
| Example | Example | Example | Example |
Implicit output: If nothing is printed after termination, print the stack until the next null terminator (or the whole stack if no null terminator) as a string.