Categorygithub.com/ASC8384/wen
repository
0.0.0-20231225120526-fe244b6ce1cd
Repository: https://github.com/asc8384/wen.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# README

wen

一款基于递归下降解析器的编程语言,语法类似于 BrainFuck,命名为 wen-ilovebuaa

tokens

1. 空白字符

会忽略换行符( \n ) 、回车符( \r ) 、 横向制表符( \ t )、纵向制表符( \v )、换页符( \f )和空格符这 6 个空白字符 。

2. 操作符

运算符作用
a将指针左移一个位置
i将指针右移一个位置
l将指针指向的单元的数值增加1
e将指针指向的单元的数值减少1
o输出指针指向的单元的数值(一般为ASCII字符)
v输入一个数值到指针指向的单元(一般为ASCII字符)
b如果指针指向的单元的数值为0,跳过匹配的 ]
u如果指针指向的单元的数值不为0,跳回到匹配的 [
+将指针处的字节与存储中的字节相加,结果存储在寄存器的字节中。
-将指针处的字节与存储中的字节相加,结果存储在寄存器的字节中。
*将指针处的字节与存储中的字节相乘,结果存储在寄存器的字节中。
/将指针处的字节与存储中的字节相除,结果存储在寄存器的字节中。
@修饰符存储处的数值不用转换ASCII码,以数字类型输入以及输出
A表示寄存器
?读取寄存器的值到指针处的字节
!存储寄存器的值到指针处的字节
$变量前缀
[]()限制变量操作范围
&初始化数据
^指针指向变量的起始位置
B根据当前指针指向的值进行不同跳转
#条件语句结束
V跳转到条件语句结束
E程序立刻终止

Parser

使用递归下降解析器。

Backend

使用 Go 语言解释执行。同时也提供了 C 语言后端,作为编译执行的可选项。

Run

cd wen/
go build
wen sourcename.wen

或者

go run "wen\main.go" -c "wen\1.wen"

或者

go run main.go -d "llllllllbillllbillilllilllilaaaaeuililieiilbauaeuiioieeeollllllloollloiioaeoaollloeeeeeeoeeeeeeeeoiiloillo"

其中,-c 代表使用C语言后端,-d 代表输出抽象语法树。