Skip to content

CoccusQ/V3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The V3 Programming Language

V3 是一门基于后缀表达式的编译性语言,借助栈完成表达式计算和函数参数传递,但是不是一门完全面向栈的编程语言。

语言已经实现完全自举,编译到x86汇编(nasm语法)。

目前仅支持 Linux 平台。

标准库(libv3rt.a)使用汇编编写,组成如下:

  • 标准输出流: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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors