摇头语
shl的Python项目详细描述
摇头语言(SHL)
嘘!(易于编写,易于理解)由llvm支持的语言。
绑定
fromswinginghead.compilerimportBinderbinder=Binder(<code>)binder.<func_name>=>yourfunctionbinder=Binder.from_file('examples/demo.shl')assertbinder.head(3.0,4.0)==5.0
类型
`type(<meta>)?`
`int<32>`
`float`
`array<`int<32>`, 4>`
文字
(<type>-><literal>)
(`int<32>`->15)
(`int<64>`->323443)
(`float`->3.35)
(`void`->0)
(`array<`int<32>`, 4>`->@32~44~55~66@)
指针
<-<value>
<-(`float`->3.35)
控制流图
比较
| expr ">" <comp prefix><comp type><comperator> "<" expr |
,1 >f ordered gt< ,2
如果/然后
comp "=>" {
exprs*
}
|,1 >f ordered gt< ,2| => {
./ (`float`->2.0)
}
如果/然后/其他
comp "=>" {
exprs*
}
"!=>" {
exprs*
}
|,1 >f ordered gt< ,2| => {
./ (`float`->2.0)
}
!=> {
./ (`float`->5.0)
}
功能
函数类型
swing <return> $<arg1>€....€<argn>$
swing `float` $`float`€`float`$
身体
<name> {
<expr>*
}
add {
,1 f+ (`float`->3.35)
res eqs ,1 f+ ,2
./ ,res
}
本地名称
,<name>
,1 (first argument)
,n (nth argument)
,xyz (xyz declared upper)
操作
<literal or name> <op prefix> <op> <literal or name>
,1 f+ (`float`->3.35)
方程式
<name> eqs <something>
res eqs ,1 f+ ,2
返回
./ <return value>
./ ,res