Skip to content

BERADQ/BrainShitJS

Repository files navigation

这是一个新的编程语言

是对BrainFuck的拙劣模仿

你可以尝试用他写出HelloWorld

使用c [path] 编译.bs文件

使用run [path] 运行编译后的.bns文件

helloWorld

(A|U|B)

必须在程序的头部,用于指定输出的字符编码。

  • A : ASCII

  • U : UTF-8

  • B : Base64

需要注意声明会被计算为两个指令,使用F打点时往往值会比预期大2就是因为此特性

1

当前Byte的值增加1。

0

当前Byte清空,

需要注意这实际为 语法糖,编译时转换为:LX-FR-SL-JY-R,会覆写唯一独立Byte中的值

注:当指针小于0时指针将从主缓冲的末尾开始倒数

S

当前Byte的值减少1。

L

将指针向左移动一位。

R

将指针向右移动一位。

F

标记这个指令在代码中的的位置到当前Byte中。

J

如果当前Byte的下一位不为0,则跳到当前Byte值所对应的指令位置继续执行。

需要注意的是,值所指向的指令本身不会被执行。

X

缓存当前Byte的值到唯一的独立Byte中。

Y

读取独立Byte的值写到当前Byte。

O

将当前Byte的值存进A-Buffer尾部。

C

清空A-Buffer。

I

获取输入的字串,将当前Byte作为index,输入字串到B-Buffer对应位置中。

A

将当前Byte作为index,读取A-Buffer中对应的值覆盖当前Byte。

B

将当前Byte作为index,读取B-Buffer中对应的值覆盖当前Byte。

P

将A-Buffer中的数据根据指定的字符编码一次性输出。

/*注释*/

指令 ASCII 编码
1 49 0x0
0 48 [0X26,0x43,0x12,0x57,0x3E]
S 83 0x1
L 76 0x2
R 82 0x3
F 70 0x4
J 74 0x5
X 88 0x6
Y 89 0x7
O 81 0x8
C 67 0x9
I 73 0xA
A 65 0xB
B 66 0xC
P 80 0xD
- 45 0xE

Releases

No releases published

Packages

No packages published