Phi
Phi, or Φ, is an Esolang designed by PSTF.
It is a Brainfuck derivative.
Data storage
The program memory is composed of a theoretically infinite number of cells, that each store a single integer datum, in the range of Z.
At any instant in the program, a pointer marks the activated cell. The memory is normally infinite long(or expandable), but 1,000,000 cells when Restricted or Folded.
There are a dialect that every cell can be only in the range of [0, 65536), which we call it Restricted variant. Also, Restricted variant have a variant that wraps at the limit value, which calls Folded variant.
Syntax
CMD | Things is do |
---|---|
+ |
Increase the activated cell by 1. |
\ |
Increase the activated cell by 16. |
» |
Increase the activated cell by 256. |
- |
Decrease the activated cell by 1. |
/ |
Decrease the activated cell by 16. |
« |
Decrease the activated cell by 256. |
> |
Inactivates the current cell and activates the cell to its right. In other words, point the pointer to a cell to the right. |
< |
Inactivates the current cell and activates the cell to its left. In other words, point the pointer to a cell to the left. |
. |
Output cell as ASCII character. |
: |
Output cell as a number. |
[ |
Go to corresponding ] if value in stomach is 0.
|
] |
Go to corresponding [ if value in stomach isn't 0.
|
( |
Start a comment. |
) |
End a comment. |
, |
Get input as a character. |
; |
Get input as a number. |
# |
Quit program immediately. |
Thus every Brainfuck program also work in Phi.
Examples
A+B Problem
;>;[-<+>]<:
Bad
,>,[-<+>]<.
Hello, World!
+++++++++++[>++++++>+++++++++>++++++++>++++>+++>+<<<<<<-]>++++++.>++.+++++++..+++.>>.>-.<<-.<.+++.------.--------.>>>+.>-.
Truth machine
;[:]:
Cat program(EOF returns 0)
,[.,]
Error
It's definitely about dealing with errors: when an error is encountered, it outputs a piece of information and then stops.
Memory error
These only work in Restricted variant.
Negative value in any cell:
[Error 1] The value inside the cell must be a natural number that less than 65536. The program failed to execute.
Value above/equal 65536 in any cell:
[Error 1] The value inside the cell must be a natural number that less than 65536. The program failed to execute.
Syntax error
Unmatched brackets:
[Error 2] Failed to find matching square brackets. Compilation failed.
A comment block appears that is not closed:
[Error 3] The comment block must be completely closed. Compilation failed.
Nothing was entered, or an EOF was entered (if it was not disposed of):
[Error 5] Failed to get the correct input. The next code won't be executed.
[Error 8] Stack overflow. The program failed to execute.
Miscallenous
Runtime error:
[Error 114514] Runtime error. The next code won't be executed.
Memory was out:
[Error 1919810] There is not enough memory for code execution. The program failed to execute.
Internal system error:
[Error -1] ?̨̥͖̪̙͍̞̉͒̾̓̈̌̍͆́͜?̺̦̟͍̖̫̮̖͛̒̓̐̄̿̇̄?̢̨̡̛͎̯̑͌̎̃̉͐͝ͅ?̢̪̭̫̝̠̤̆̋̂̔̍͐̽̔͒?̫͔̫͙͒̌̌̆̂̐̈́͟?̸͙̱͍͖͖̽̾̀͛͐?̸̧͓͔͚̩̎́̄̐̔̏̚?̢̟̫͎͚͕̙̎͌̉̇͑͋̍̑̐͒ͅͅ?̴̢̡̢̱͈͍̗̬̈̿͑̿̐̓͋͒̚͝ͅ?̞̠͖̦̜̩̳̂́̂̀̃͌ Compilation failed.
Successfully runned the program:
[Error 0] Program exits normally and properly. Successfully runned the program.
Interpreters
Just modify on BAIMS's interpreter.