Semistack
Jump to navigation
Jump to search
Semistack is an Esoteric programming language designed by PSTF for all beginners of stack structure.
It has a stack, and it will be Turing-complete.
Overview of Semistack
Semistack doesn't ignore case, so every command should all in lowercase(or be parsed as variable name).
Command table(originals)
>> Control flow
for | For every item in a("stack" for the stack), execute the code b.
while | While the expression a is true, execute the code b.
if | Same as "while", but only execute the code b for once.
else | Used for construct if-else structure.
elif | Used for construct if-elif-else structure.
break | Quit the loop immediately. If it is in Main program, exit immediately.
continue | Jump to next round of loop. If it is in Main program, do nothing.
>> Stack operation
push | Push the specified value onto the stack. If nothing detect, duplicate the ToS.
pop | Pop the ToS.
__tos | Self-explanatory.
__2ttos | 2nd-to-top of stack.
>> Arithmetics
add | Add two values together. You can also use +.
subtract | Subtract y from x. Alt: -.
multiply | Multiply x with y. Alt: *.
divide | Divide x by y, result in float. Alt: /.
intdiv | Divide x by y, result in quotient. Alt: //.
modulo | Modulo x by y. Alt: %.
exponent | Return x^y. Alt: ^.
negate | Negate the specified value. Reverse if it is string or an array.
range | Python "range(A,B,C)". Returns an array.
nroot | Return x^(1/y). Alt: `.
log | Returns the logarithm of y with x as the base.
>> Variables
let | Let x to be y. If x doesn't exist, create a variable called x(with the type of y).
===>
num | Numbers.
string | A string of characters.
array | An array.
bool | A boolean.
pair | A pair of value.
none | Nonetype.
>> Pair operations
former | Former value of a pair.
latter | Latter value of a pair.
>> Array operations
insert | Insert x at the index of y. Leave y blank means the tail.
delete | Delete the element at the index of x.
popdel | Delete the element at the index of x, but store it at y.
>> I/O
input | Raw input, with the prompt x.
read | Parsed input, with the prompt x.
print | Print the value of x directly.
output | Output a serie of value, including seperators and a terminator.
>> Libraries
import | Import a specified library.
>> Miscallenous
random | A random float between 0 and 1.
randint | A random integer in the range you've specified.
choice | Choose an item randomly from an array.
sort | Sort the array immediately.
and | Logical AND.
or | Logical OR.
not | Logical NOT.
xor | Logical XOR.
>> Constants
true, false, empty, nan, infinity
Strings can be written in double quotes. Use backslash for escape(\q is used for double quotes.). Comments are written between parentheses.