gplz.yacuabll

Name says it all.

Currently, the following instructions are supported:

a
FuncDefStatement
'
FuncCallStatement
.
VariableStatement
{
AssignmentStatement
}
AddSelfStatement
<
AddStatement
>
SubSelfStatement
k
SubStatement
b
MulSelfStatement
9
MulStatement
+
DivSelfStatement
-
DivStatement
*
ModSelfStatement
/
ModStatement
~
OrSelfStatement
|
OrStatement
%
AndSelfStatement
!
AndStatement
"
NandSelfStatement
§
NandStatement
$
BitOrSelfStatement
&
BitOrStatement
(
BitAndSelfStatement
)
BitAndStatement
[
IsLessStatement
]
IsEqualStatement
_
IsGreaterStatement
?
IsLessOrEqualStatement
*
IsNotEqualStatement
;
IsGreaterOrEqualStatement
,
LiteralStatement
:
PrintCharStatement
@
PrintStatement
0
NegateStatement
1
IfStatement
2
WhileDoStatement
3
UntilDoStatement
4
IfThenElseStatement
5
IfThenUnlessStatement
6
IfThenProvidedStatement
7
WhileDoUnlessStatement

Variables are encoded as ., followed by a number of # that specifies the unique name. For example, .# is a unique variable, and so is .####. Similarily, Literals are encoded as ,{#}, where the number of # specifies the content of the integer literal. 

Note that .yacuabll is completely freeform, and you can add any unused characters as comments.

Example

Hello, .yacuabll World 

{.#,#H#E#L#}.#,#L#O# #b.#,#W#O#b.#,#R#L#:.#}.#,#D# #T#H#I#}.#,#S# #F#I
NE PROGRAM DOES NOT
NECESSARILY ##}.#,######}.#,######
}.#,#
#
#
#
#
:
.
#                   THIS SPACE FOR RENT
}
.
#
,
#
#
#
}
.
#
,
#
#
#
#
:.#:.#}.#,###WORK:.#{.##,####b.##,##b.##,####:.##
b.##,###>.##,####>.##,####>.##,#:.##:.#}.#,#AS##:.#>.#,######:.#>.#,####>.#,####
:.#