From Esolang
Jump to navigation Jump to search

思 is designed by PSTF.

Language Overview

PSTF: "I'll compile and run every script myself."

Syntax

This Esolang is based on memory, and stack, and even the STDIN and STDOUT.

I'll directly store data to the memory.

I also have 10 special registers:

  1. All input and output, mathematical operations, logical operations, and bit operations are carried out in the "Kernel".
  2. Use "Find" to get the address of a certain data.
  3. Others just as normal storer.

I can also control STDIN and STDOUT, even variables, and even object-oriented.

Commands

Basics

Command Table
CMD Meaning
0 <id> Reset the "id".
<data>=> <id> Set "id" to "data".
<data>+> <id> Add "data" to "id".
<data>-> <id> Subtract "data" from "id".
<id1> (=) <id2> Swap "id1" and "id2".
input Get user input and store it to kernel.
print <x> Print x.
<id> = ker? If "id" equals to kernel, then put 1 to REG01, otherwise 0.
<id>-> ker Reset "id" and add the original value of "id" to kernel.
<data>*> <id> Multiply "id" by "data".
<data>/> <id> Divide "id" by "data".
label :name{code} Define a label.
ker? $name If kernel is not 0, then jump to label "name".
# I'll ignore that line if it's started with hashtag.
NOP Do nothing.
|<X>| I'll stop.

If you can, please don't let me execute the command that defines the tag and the tag jump, which will break the script.

Advanced

Conditions

if (expr)
{
    code1
}
(
else if (expr)
{
    code2
}
else if (expr)
{
    code3
}
...
else
{
    coden
}
)

I know that "(expr)" is to determine if the value of expr is true.

Loop

loop if (expr)
{
    code
}

Variable

<varname>(: <type>, <const?>) = <value>

I'll read BubbleLang to get that type.

Memory

When the data of a memory cell exceeds 9223372036854775807, if you ask me to add 1 to it, I will smash the cell and replace it with a new empty cell.

Of course, if you ask me to subtract 1 from an empty cell, this will definitely fail, so I will do NOP.

Example

Hello, world!

print "Hello, world!"

One time Cat

input
print ker

Disan count

input
a = ker
i = 1
if (a = 0)
{
    |<X>|
}
loop if (i < a)
{
    if (i % 2 == 0)
    {
        print f"{i} is even"
    }
    else
    {
        print f"{i} is odd"
    }
}

See also

  1. Assembly
  2. Child Script

Categories