YAASEL
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.
Language Overview
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 |
Notes
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.
Examples
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