From Esolang
Jump to navigation Jump to search
Not to be confused with 诗(PSTF), nor 诗(islptng).

is an esolang invented by User:None1, it is based on Poetic. Programs in this esolang are like abstract Chinese poetry.

Overview

The sole form of data storage in Poetic is the unsigned byte (i.e. an integer in the range 0-255). 诗 has a "tape" of 30,000 of these unsigned bytes, and a memory pointer to keep track of which value is currently being accessed.

Source code for 诗 is entered in the form of lines. Words are considered to consist of any number Chinese characters (punctuations aren't included), and any character that is not either of these do not delimit lines or add to the character count. Each word is then converted to numbers as follows:

  • If a line is less than 10 characters long, it is converted to that single digit.
  • If a word is exactly 10 characters long, it is converted to the digit 0.
  • If a word is more than 10 characters long, it is converted to a series of digits, representing the number as written in decimal notation (for example, a 12-character line becomes 12).

Each digit then turns into an instruction, and then the program is executed. The list of instructions is as follows:

Value Brainfuck Equivalent Description
1 [ If the current byte is equal to 0, jump execution to after the matching 2.
2 ] If the current byte is not equal to 0, jump execution to the matching 1.
3 + Increment the value of the current byte by next_digit. If next_digit is 0, the value used instead is 10.
4 - Decrement the value of the current byte by next_digit. If next_digit is 0, the value used instead is 10.
5 > Increment the memory pointer by next_digit. If next_digit is 0, the value used instead is 10.
6 < Decrement the memory pointer by next_digit. If next_digit is 0, the value used instead is 10.
7 . Output the value of the current byte as an ASCII character.
8 , Read a character from the input stream, and write its ASCII value to the current byte. (Note: This sets current byte to 0 upon end of input.)
9 N/A Set the current byte to a random value from 0 to 255.
0 N/A End program execution here. This does not end program execution if it is used as an argument for 3, 4, 5, or 6.

Both the values of bytes and the memory pointer wrap around on overflow and underflow.

Examples

Cat program

一加一不等于十二
二
加二不等于十四
三加三不等于十六
没了

A version that makes more sense:

读取输入并且输出
读取一个字符,判断它是否是文件结尾符
直到文件结尾为止
没了

Hello, World!

你好世
界你好世界你好世界你
好
世界你好世
界
你好世
界你好世界你好
世界你好世
界
你好世
界你好世界你好世界你
好世界你好
世
界你好
世界你
好世界你好
世
界你好
世界你好世界你好世
界你好世界
你
好世界
你
好世界你好世
界你好世界
你好世界
你
好世
界你好世界
你
好世界
你好
世界你好世界你
好世界你好
世
界你好
世
界你好世界你好
世界你
好世界你好世界
你好世界你好世
界你好世界你好
世界你
好世界
你好世界你好世
界你好世界
你
好世界
你好
世界你好世界你
好世界你好
世
界你好世
界你好
世界你好世界你
好世界你好世
界你
好世界你好世界
你好世
界你好
世界你好世界你
好世界你
好世界你好世
界你好世界你好
世界你好
世界你好世界你好
世界你好世界你
好世界你好
世
界你好
世
界你好世界你好
世界你好世
界你
好世界你好世界
你好世界你好世界你好