/bvm-weak-type

dynamic typing programming language

Primary LanguageGoOtherNOASSERTION

BVM虚拟机和编译器

词法分析和语法分析

词法分析器使用flex生成, 此法规则文件保存在parser/lex.l.

语法生成器使用bison生成, 语法文件保存在parser/parser.y.

语法示例

contract mycnt {
    func myfunc0(b) {
        var x = b
        return x
    }

    func myfunc1(a, c) {
        var r = myfunc0(333)
        return a+c+r
    }

    var y = myfunc1(111, 222)
    println(y)

    var m = 111
    var n = 222

    if m > n {
        var i = 555
        println(i)
    } elif m < n {
        var j = 666
        println(j)
    } else {
        var l = 777
        println(l)
    }
    
    var t = (1+2)*3
    println(t)
     
    var a = 0
    while (a<10) {
       println(a)
       a = a + 1
    }
    
    var a = "mystr"
    println(a)

    var a = 1
    a += 3 * (5 - 1)
    println(a)
}

功能列表

  • 内部函数调用
  • 外部函数调用
  • if/else for switch while
  • 数据类型: 整数 字符串 map list
  • 逻辑和关系: && || ! >= <= > <
  • 运算符: + - * / += -= *= /= % ^

安装方式:

  1. 建立golang开发环境
  2. 建立开发目录: 在当前目录执行 mkdir -p bvm/src/bvm
  3. 设置GOPATH: 进入bvm目录执行: export GOPATH=$(pwd)
  4. 克隆代码: 进入src/bvm, 执行: git clone https://gitlab.com/bottos-project/bvm.git .
  5. 编译代码: 进入代码的cmd目录下, 执行: go build main.go
  6. 运行测试代码: 在代码的cmd目录下运行: ./main test1.contract