V3 是一门基于后缀表达式的编译性语言,借助栈完成表达式计算和函数参数传递,但是不是一门完全面向栈的编程语言。
语言已经实现完全自举,编译到x86汇编(nasm语法)。
目前仅支持 Linux 平台。
- 标准输出流:
printi,prints,printc - 标准错误流:
erri,errs,errc - 字符串操作:
streq,strcmp,strlen - 读文件(基于mmap):
readfile
- 操作基本格式:
a b op,如1 2 + - 变量赋值即声明:
value -> varname - 数字字面量仅支持整数,可带符号
- 字符和字符串字面量分别用
''和""包裹,暂且不支持反引号,支持 C 风格转义 - 静态数组声明:如
alloc 128 -> arr - 数组元素的访问:按8字节访问(整数的长度)
index array [],按字节访问(可用于访问字符串字面量)index array b[] - 数组元素的赋值:
value index array []=,value index array b[]= - 行注释:如
# this is a comment - 条件语句:
cond if then-block else else-block endif,其中else可选 - 循环语句:当前仅有
do while循环,如do ... cond while - 外部函数导入:
extern func_name,需编写汇编函数,在编写汇编时使用pop获取参数,用push压入返回值(可选)
目前的自举编译器实现仅能输出汇编,且报错不完善,生成可执行文件需用nasm编译,详见build.sh