pootis
Paradigm(s) | imperative |
---|---|
Designed by | Pablo "Octadrius" Blanco |
Appeared in | 2025 |
Memory system | Stack-based |
Dimensions | one-dimensional |
Computational class | Turing complete (?) |
Major implementations | Original |
Influenced by | BASIC brainfuck COBOL Assembly Expression 2 |
File extension(s) | .txt |
Pootis script, or just pootis, is an esolang (delusionally) designed after the TF2 jokes and lore.
Language overview
The language operates on single line instructions, which tell the interpreter what to do. They are mostly based on TF2 sentences or concepts.
Variables can be declared with the poot
instruction, which takes a number as an
argument. Variables can only be named as positive integers.
Procedures can be declared using the erectin
command, and they'll have their own
stack frame on call.
Basic instructions:
Instruction | Description |
---|---|
poot
|
Declares a variable |
dispense
|
Assigns a value to a variable |
erectin
|
Starts the procedure block |
built
|
Signals the end of a procedure block |
note
|
A comment, which can be printed or not |
teleport
|
Declares a target label or jumps like a traditional goto
|
jump
|
Skips the next line if the conditions are met |
heal
|
Increments a variable, or appends a string |
shoot
|
Decrements a variable, or prepends a string |
use
|
Calls a procedure |
medic
|
Imports another pootis module |
There are other instructions like class is dead, message.
to abort the program, and other directives like the briefcase is safe
that control the verbosity.
pootis is the only built-in procedure, the rest must be bound by hand using place sentry procName
. An example of a large binding file can be found at cc.txt in the project page
Examples
Hello World
This program prints out Hello World!
pootis { "Hello World!" }
Basic Loop
This program illustrates the basic looping operation, since there are no for
or while
structures.
note Example of a loop:
poot 1
dispense "10" in 1
teleport exit
jump if 1 isn't "0"
teleport down
pootis{"i = ", 1}
shoot "1" to 1
teleport up
teleport exit
pootis{"Done!"}
note End of the loop!
Using imports
You can define, say a doctor.txt
file:
erectin a medigun pootis { "Healed ", 1' } built medigun erectin an ubercharge pootis { "Charging the ", 1' } use medigun { 1' } built ubercharge
Then you can use it with the medic
import, which is dynamic (Therefore the call site might affect).
medic "doctor.txt" use doctor/ubercharge { demoman }
Abort the program early
This instruction terminates the program, if needed.
the briefcase is safe note This will abort the program spy is dead, not big surprise. pootis { "This won't be shown!" }
Note: The directive the briefcase is safe
just toggles off the printing of the comments.