VFUSL
Jump to navigation
Jump to search
Paradigm(s) | imperative |
---|---|
Designed by | User:AlmostGalactic |
Appeared in | 2025 |
Memory system | stack |
Dimensions | one-dimensional |
Computational class | Push-down automata |
Reference implementation | https://github.com/AlmostGalactic/VFUSL |
Influenced by | Forth |
VFUSL (Very Full Stack Language) is a stack-based esoteric programming language where every operation is added to the stack and executed at runtime. It's designed with a mix of simplicity and flexibility, inspired by Reverse Polish Notation and other stack-oriented languages, but with its own unique flavor.
Overview
VFUSL treats every piece of input as a stack element. Code blocks, numbers, strings, and operations are all added to the stack. Execution happens in a linear pass through the stack, with commands interpreting and manipulating stack contents.
Syntax
Strings
Strings are wrapped with |
characters.
Example:
|Hello, World!|
Code Blocks
Code blocks are enclosed in square brackets [
and ]
.
Example:
[ VFUSL CODE HERE ]
Code blocks are only executed when explicitly called with the exec
command.
Commands
print
– Prints the top value on the stack, followed by a newline.- Example:
|Hello, World!| print
- Example:
write
– Prints the top value without a newline.- Example:
|Hello, | write |World!| write
- Example:
exec
– Executes a code block.- Example:
[ 123 print ] exec
- Example:
- Arithmetic:
+
,-
,*
,/
,%
– Basic math operations using Reverse Polish Notation.
- Comparisons:
==
,!=
,<
,<=
,>
,>=
- Example:
2 1 > print
→ printsTrue
- Example:
<--?
– If-statement. Takes two code blocks and runs one depending on a condition.- Example:
1 2 > [ |True| print ] [ |False| print ] <--?
create
– Defines a function by associating a code block with a name.- Example:
[ |Hello, World!| ] hello create hello exec
@in
,@ord
,@chr
– Input and character manipulation.@in
– Reads input@ord
– Converts a character to its ASCII value@chr
– Converts a value to its ASCII character
whl
– While loop. Repeats a block while a condition (given as a code block) is true.- Example:
[ 2 1 > ] [ |FOREVER| print ] whl
:
– Duplicates the top stack item.define
– Defines a variable- Example:
name |AlmostGalactic| define name print #This should print AlmostGalactic
Examples
Truth Machine
@in 0 == [ # Do nothing ] [ [1 1 ==] [ 1 write ] whl ] <--?
Cat Program
@in print
Calculator
|First Number: | print num1 @in define |Second Number: | print num2 @in define |Operator (+ - * /): | print op @in define result 0 define op |+| == [ |result| num1 num2 + define ] [ op |-| == [ |result| num1 num2 - define ] [ op |*| == [ |result| num1 num2 * define ] [ op |/| == [ |result| num1 num2 / define ] [ |Not supported| print ] <--? ] <--? ] <--? ] <--? result print
External Resources
- GitHub Repository: Python Interpreter