用户手册

启动指令

cmake .
make

源文件是code.pi

运行my_interpret,可以看到源文件的所有token,并且更新token.json

运行ast,可以看见源文件的抽象语法树ast,并且更新ast.json

运行eval,可以获得源文件的运行结果

运行eval_repl,可以进入repl模式

example文件夹中有实例程序

json文件可以在https://jsoncrack.com/

网址查看其结构

该语言支持整形,浮点型,布尔型,字典(支持整形、字符型、null、浮点型作为key),列表(可存储不同数据类型)

list = ['jack', 'lucy', 'lily', 2]
list[0] += 'sean'
list[1] *= 10
list[3] ++
list[2] += list[0]
print(list)


// 字符串
print('kk' in 'kitty')

// 列表
print(4 in [1, 2, 3])

// 字典
print('name' in {'name': 'jack', 'age': 18})
hash = {'name': 'jack', 'age': 18}
a = {123 : 'abc', true: 'kitty', null: 456, 'name': 'jack'} // 可哈希的类型有,整形,bool型,null型,字符串型
// 可直接对属性赋值,可直接使用.运算符操作属性
hash.name = 'lucy'
hash.age += 2
hash.height = 170

print(hash)

// 可以使用索引访问
hash = {'name': 'jack', 'age': 18}
print(hash['name'])
print(hash['age'])

// 使用in运算符
print('name' in hash)

支持控制流 if,while,for,switch

a = 1
b = 1

if a < b {
    c = 'less than'
} else if a > b {
    c = 'great than'
} else {
    c = 'equal'
}
print(c)

i = 0
sum = 0
while i < 10 {
    sum += i
    i++
}
print(sum)


sum = 0
for i = 0; i < 10; i++ {
    sum += i
}
print(sum)

a = 0
name = null
switch a {
    default:
        name = 'sean'
    case 1:
        name = 'jack'
    case 2:
        name = 'lucy'
    case 3, 4:
        name = 'lily'
        break
}
name

支持函数、闭包、高阶函数

add = fn(x, y) {
    return x + y
}

foo = fn() {
    a = 1
    b = 2
	print('foo running')
    return
}

print(add(1, 2))
foo()

f = fn(x) {
    return fn(y) {
        return x + y
    }
}

f1 = f(2)
f1(3)
add = fn(x, y) {
    return x + y
}

sub = fn(x, y) {
    return x - y
}

foo = fn(x, y, f) {
    return f(x, y)
}

print(foo(5, 3, add))
print(foo(5, 3, sub))

支持内置函数

print、type、len、int、float、str、exit

支持列表和字典的内置函数

列表.append .len

字典.len .get