我们现在正在制作一个语言,名为 Riddle,但是我们的能力以及人手不够,我们需要你们的加入。
Riddle 是一个运行时语言,我们设计它有两种方式运行,第一个是编译为类似 java 的字节码来运行,第二个是翻译成 AST 来运行。
这是一段使用 Riddle 编写的代码 P1196 (暂定代码语法):
var father:array = new array(30010)
var dep:array = new array(30010)
var size:array = new array(30010)
fun find(x:int):int{
if(father[x]==x)return x
else{
val temp = father[x]
father[x]=find(father[x])
dep[x] += dep[temp]
size[x]=size[father[x]]
return father[x]
}
}
fun add(x:int,y:int):void{
val tx = find(x)
val ty = find(y)
if(tx==ty)return;
father[tx] = ty
dep[tx] += size[ty]
size[tx]+=size[ty]
size[ty]=size[tx]
}
fun init(int n):void {
for (int i = 1; i <= n; i++) {
father[i] = i
dep[i]=0
size[i]=1
}
}
fun main(){
val T
scanf("%d",&T)
init(30005)
while (0<T) {
T--
val ch:char,x:int, y:int
scanf("%c%d%d",&ch,&x,&y)
if (ch == 'M') {
add(x, y)
}
if (ch == 'C') {
if (find(x) == find(y)){
if(x==y)println(0)
else println(abs(dep[x]-dep[y])-1)
}
else println(-1)
}
}
return 0
}
如你所见,该语言的类型定义法类似于 pascal,而变量定义关键词则类似于 Kotlin,我们希望这个语言更加轻量,快速,且通用。
我们还有库机制,可以让用户用不同于 Riddle 的语言编写库的代码,以达到更强大的拓展。
目前该语言有两个语言版本:C++ 和 Kotlin,但是很遗憾,以我的能力无法自主完成所有的工作,所以我希望有人可以帮助我完成该运行时的工作。该语言是完全开源的,可以直接获取所有的源代码。
欢迎您加入我们的开发行列。