YAASEL (Yet Another Another Stack-Based Eso-Lang) is a Stack-Based Programming Language featuring 15 individual Instructions, it was created by Felix Eckert (user:Bertrahm). It is partly inspired by Brainfuck. It currently has a Web-Implementation written in Java-Script and a Java Implementation. The Source Code of both can be found on the YAASEL Github Repository.
YAASEL has a Stack consisting of bytes and a single-byte buffer or stash.
|Instruction Character||Instruction Name||Description|
|>||Larger Than||Checks if the top of the Stack is larger than the second to top.|
|<||Smaller Than||Checks if the top of the Stack is smaller than the second to top.|
|=||Equal To||Checks if the top of the Stack is equal to the second to top.|
|:||Jump Point||A Point for the Program to Jump Back To|
|!||Jump Back||Jumps to last Jump Point|
|$||Stack Empty Exit||Exits if Stack is Emtpy|
|&||Merge||Adds top of Stack with the current value of the Buffer/Stash|
|+||Increment||Increments top of Stack by 1|
|-||Decrement||Decrements top of Stack by 1|
|#||Void||Voids the top value of the Stack|
|'||Stash||Stashes the top value of the Stack to the buffer|
|"||Push Stash||Pushes the value from the stash/buffer to the stack|
|*||New Value||Creates a new entry in the stack|
|~||Input||Gets input from the user and writes it to the stack|
|%||Prints the value on top of the stack encoded in ASCII|
The Conditionals (>, <, =) place the top value of the stack to the left of the operator and the second-to-top to the right. If a comparison is true, the program will continue on from that point, if not, it will jump back to the last Jump Point or start of the program.
Stashing a Value will remove it from the stack. Loading the Stash/Buffer to the stack will create a new entry in the stack.
This example prints out "HELLO WORLD!" with a new-line.
* Create new Entry in Stack for operation Increment up to a Base Value for Printing Hello World ++++ Start with 4 ' Stash " Copy Stash & Merge 8 ' Stash " Copy Stash & Merge 16 ' Stash " Copy Stash & Merge 32 ' Stash * New Stack Entry (We want to keep the 32, as it is the SPACE character) " Copy Stash & Merge 64 ++++++++ 72 (H) % --- 69 (E) % +++++++ 76 (L) %% +++ % 79 (O) "%# 32 (Space) ++++++++ 87 (W) % -------- 79 (O) % +++ 82 (R) % ------ 76 (L) % -------- 68 (D) % "+% 33 (Exclamation) #* ++++++++++ % 10 (LineFeed)
This is the reverse-cat program written in YAASEL
~ Get User Input : Jump Point % Print Top Value # Void $ Exit if Stack Empty ! Jump Back