We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

User:dragoneater67/robots.txt

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.
robots.txt
Designed by User:Yayimhere,User:Dragoneater67
Appeared in 2026
Memory system Tree-based
Computational class Unknown computational class
Reference implementation Unimplemented

robots.txt is an esoteric programming language based on semi-orders.

Syntax

The program starts with a global string on the first line, followed by a -_ separated semi-order of subprograms on the second line. Each subprogram is a regex string that pulls from the global string. Each subprogram can optionally be preceded by a natural octal number, which is called a channel number. The octal is written with Chinese, specifically 的一是不了在人有 correspond to 01234567.

Execution

The interpreter has an internal instruction pointer initialized to 1, from now on it will be called N. The interpreter executes every subprogram in channel N at the same time (e.g. in parallel), then executes Nth subprogram that is not in a channel, then increments N, this process is repeated until the program is halted. The interpreter also possesses a tree and a root crawler, which is used to crawl the tree. The tree is initialized to a single empty root node, where the root crawler is located by default. During the execution of a channel, a subcrawler of the root crawler is created for each subprogram in the channel, they are destroyed after the execution of their respective subprogram is completed. Each crawler can spawn its own subcrawler and possesses its own internal register. Crawlers can only travel down the tree, crawlers can only edit their peers' registers but not their own. UUIDs are used to index tree nodes and crawlers. Each node in a tree stores a string of cyrillic characters or the first 9 letters of the English alphbet.

Subprograms

Subprograms that are not in a channel define relations between strings:

F[x] => y

This means that x, when applied to F, produces y. Relations can be reversible:

F[x] <=> T[y]

This means that x, when applied to F, produces y, and y, when applied to T, produces x. In both cases, strings should be of different types, one must be cyrillic, and the other must be digits.
Subprograms that are in a channel apply these relations:

F[x]

This means that x is applied to F.
The result of an application is stored using the <=> operator:

F[x] <=> z

This means that the result of F[x] is stored in z. Where z is a UUID of a crawler.
Applications can be chained:

F[x] => T[y]

This means that F[x] is executed, then T[y] is executed.

Built-in functions

Subprograms that are in a channel have access to built-in functions for manipulating crawlers and trees:

арбузята
Function Description
G[x] Grafts a child node and moves the crawler there, x is the crawler UUID, returns UUID of the newly created child node.
F[x][y] Applies string that is stored in the node that crawler x is located at to y.
S[x] Spawn child crawler at the same place as crawler x.