pootis

From Esolang
Jump to navigation Jump to search
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.