YASBL

YASBL stands for "Yet Another Stack Based Language" .
YASBL is a language with a 1D format, with 1-character opcodes, much like Brainf*** .
It was inspired by the demo creation tool IBNIZ and its programming language.
YASBL works on an infinite stack of infinite stacks, called the "stack-stack", unlike IBNIZ, which only uses one stack.
== Syntax ==
 (command) = i - / 0 d x p o D N X P O I, whitespace or (macrochar) {Case sensitive}
 (commands) = 1 or more of (command) concatenated in a string together. Whitespace is ignored.
 (macrochar) = Any ASCII character that isn't + - / d x p N D X P : or whitespace
 (macro) = newline then (macrochar): (commands)
 code = (commands) then 0 or more (macro)
== Command reference ==
 Operation Char Description
 Increment i Increments the top value of the stack on the top of the "stack-stack".
 Subtract - Pops 2 values off the top stack of the "stack-stack", subtracts one from the other, and pushes the result.
 Divide / Same as - but does a division instead of a subtraction.
 Push 0 0 Pushes 0 onto the stack on the top of the "stack-stack".
 Duplicate d Duplicates the top value of the stack on the top of the "stack-stack".
 eXchange x Swaps the top 2 values of the stack on the top of the "stack-stack".
 Pop p Pops the top value of the stack on the top of the "stack-stack".
 Output o Pops the top value of the stack on top of the "stack-stack" and outputs it as an ASCII character.
 New Stack N Pushes an empty stack onto the "stack-stack".
 Stack Dup D Duplicates the stack on the top of the "stack-stack".
 Stack Swap X Swaps the top 2 stacks on the "stack-stack".
 Stack Pop P Pops off the top stack of the "stack-stack".
 Output O Pops the top value of the stack on top of the "stack-stack" and outputs it as a number.
 Input I Inputs a character from the user and pushes its character code onto the top stack of the "stack-stack".
 Run R Pops off and runs the top value of the top stack as an ASCII value for a command.
 Branch B If the top value of the top stack is 0 then use the second-top value as an address to skip to.
== Macros ==
Macros start with a character used to represent it, and then they contain the code the macro character must represent.
Macros can contain macro characters that were defined before the current macro.
A macro is of the format:
 (macro character): (commands)
=== Macro Examples ===
Addition
 +: 0x--
Multiplication
 *: 0ix//
Decrement
 v: 0i-
== Code Examples ==
Hello World
 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 LLE0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 E0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioL
 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 E: 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
 L: 0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiio
Cat (puts input directly back to output)
 io00B
Category:Languages Category:Stack-based