Suzy

Suzy is a 3D esoteric programming language, inspired by Befunge, superseding 3D. Suzy source is compiled to byte-code in the original implementation. Comments are made by directing code flow around them. It includes file I/O as well as STDIN/STDOUT. Every non-control ASCII character is used as an operation or variable name.

Commands
No-op: (space) do nothing | vertical pipe (do nothing) - horizontal pipe (if not in math mode) ' lateral pipe Execution control: @ end Flow control: { right } left ^ up 	_ down [ forwards ] backwards % random direction # jump $ conditional jump Conditional jump preparation: = equality < smaller than > greater than Input/output: ? input ! output File access: / open a file for input and output Libraries: + load a library Variable handling: : set a variable to a value ( enter math mode 	) leave math mode " enter/leave unicode mode 	. cat strings , substring 	~ swap two variables String mode: 	` temporary escape unicode mode, for changing directions 	\ escape sequence Math mode: 	+ addition 	- subtraction 	* multiplication 	/ division 	% modulus division Numeric: 	0-9 numeric constants Variable names: 	A-Z string variable names 	a-z integer variable names 	\ indirect variable mode (if not in ascii/unicode mode) Arguments: 	; separates 2 arguments Unused: 	& unused in Suzy proper (except in strings, of course), but can be used in a Suzy source file to separate sheets

Example
The following lists all primes up to a given bound: 32,7,3 }!"Primes up to: "?A ~Aa      ] a is the maxprime p is the index of the stack stack is the list of primes n is the number that is      checked for primeness i is a temp stack index & ] 3n:1p: "2"! _$0001a>  2;0\:{ }!"Too large!\n"@ & } >na$@ --- :i0 } =(n/\i*\i)n _ |              ^-{   $  |                 }:i(i+1)^   # | _p:p\!np\:" ,"!^$)n/(i\<   { | }(p+1)  _                  | ^--)1+n(n: {--{

Computational class
The author thinks Suzy is Turing Complete, because it is possible to translate any BrainFuck program to Suzy: > becomes :p(p+) < becomes :p(p-) + becomes :\p(\p+) - becomes :\p(\p-) [ becomes }=\p0$_ (with a pipe from _ to the corresponding }) ] becomes _} (with a pipe from _ to the corresponding }) Input and output work differently, but could be translated as: , becomes ?\p . becomes !\p However, I/O is not necessary for Turing Completeness, so that doesn't matter.

Implementation
A full featured implementation in Python of both byte-code compiler and interpreter are on GitHub.