Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
d33639ac
wa
项目概览
wa-lang
/
wa
11 个月 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d33639ac
编写于
11月 24, 2022
作者:
B
Ben Shi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Format several .wa files.
上级
e7ad43e8
变更
34
隐藏空白更改
内联
并排
Showing
34 changed file
with
392 addition
and
391 deletion
+392
-391
_examples/llvm/arduino_blink.wa
_examples/llvm/arduino_blink.wa
+20
-19
_examples/llvm/array_0.wa
_examples/llvm/array_0.wa
+11
-11
_examples/llvm/array_1.wa
_examples/llvm/array_1.wa
+13
-13
_examples/llvm/array_2.wa
_examples/llvm/array_2.wa
+16
-16
_examples/llvm/bitwise_logic.wa
_examples/llvm/bitwise_logic.wa
+19
-19
_examples/llvm/compare.wa
_examples/llvm/compare.wa
+24
-24
_examples/llvm/convert_0.wa
_examples/llvm/convert_0.wa
+14
-14
_examples/llvm/convert_1.wa
_examples/llvm/convert_1.wa
+3
-3
_examples/llvm/convert_2.wa
_examples/llvm/convert_2.wa
+8
-8
_examples/llvm/convert_3.wa
_examples/llvm/convert_3.wa
+10
-10
_examples/llvm/float32.wa
_examples/llvm/float32.wa
+14
-14
_examples/llvm/global_constant.wa
_examples/llvm/global_constant.wa
+4
-4
_examples/llvm/global_variable_0.wa
_examples/llvm/global_variable_0.wa
+7
-7
_examples/llvm/global_variable_1.wa
_examples/llvm/global_variable_1.wa
+13
-13
_examples/llvm/heart.wa
_examples/llvm/heart.wa
+13
-13
_examples/llvm/loop_0.wa
_examples/llvm/loop_0.wa
+5
-5
_examples/llvm/loop_1.wa
_examples/llvm/loop_1.wa
+7
-7
_examples/llvm/multi_ret.wa
_examples/llvm/multi_ret.wa
+10
-10
_examples/llvm/pointer.wa
_examples/llvm/pointer.wa
+17
-17
_examples/llvm/prime.wa
_examples/llvm/prime.wa
+11
-11
_examples/llvm/print_0.wa
_examples/llvm/print_0.wa
+1
-1
_examples/llvm/print_1.wa
_examples/llvm/print_1.wa
+9
-9
_examples/llvm/print_2.wa
_examples/llvm/print_2.wa
+5
-5
_examples/llvm/print_3.wa
_examples/llvm/print_3.wa
+3
-3
_examples/llvm/shift.wa
_examples/llvm/shift.wa
+26
-26
_examples/llvm/struct_0.wa
_examples/llvm/struct_0.wa
+21
-21
_examples/llvm/struct_1.wa
_examples/llvm/struct_1.wa
+21
-21
_examples/llvm/struct_2.wa
_examples/llvm/struct_2.wa
+15
-15
_examples/llvm/struct_3.wa
_examples/llvm/struct_3.wa
+20
-20
_examples/llvm/unconditional_jump.wa
_examples/llvm/unconditional_jump.wa
+9
-9
_examples/prime/src/benpkg/myprint.wa
_examples/prime/src/benpkg/myprint.wa
+2
-2
_examples/prime/src/check.wa
_examples/prime/src/check.wa
+7
-7
_examples/prime/src/main.wa
_examples/prime/src/main.wa
+12
-12
_examples/prime/vendor/joypkg/myprint.wa
_examples/prime/vendor/joypkg/myprint.wa
+2
-2
未找到文件。
_examples/llvm/arduino_blink.wa
浏览文件 @
d33639ac
...
...
@@ -3,28 +3,29 @@
# `wa native --target=avr arduino_blink.wa`
#wa:linkname __avr_write_port__
fn write_port(p
i16, v
i8)
fn write_port(p
: i16, v:
i8)
# Delay a period of time
var cnt i8
fn delay(n i32) {
for i := i32(0); i < n; i++ {
cnt++
}
var cnt: i8
fn delay(n: i32) {
for i := i32(0); i < n; i++ {
cnt++
}
}
fn main() {
# Set Pin #5 (connected with the builtin LED) of Port B to output mode.
write_port(0x24, 0x20)
for b := 0; ; b++ {
if (b % 2) == 0 {
# Turn on the LED.
write_port(0x25, 0x20)
} else {
# Turn off the LED.
write_port(0x25, 0x00)
}
# Delay a period of time
delay(99999)
}
# Set Pin #5 (connected with the builtin LED) of Port B to output mode.
write_port(0x24, 0x20)
for b := 0; ; b++ {
if (b % 2) == 0 {
# Turn on the LED.
write_port(0x25, 0x20)
} else {
# Turn off the LED.
write_port(0x25, 0x00)
}
# Delay a period of time
delay(99999)
}
}
_examples/llvm/array_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,18 +2,18 @@
# Test read/write arrays.
fn main() {
test_array(2, 4)
test_array(7, 9)
test_array(2, 4)
test_array(7, 9)
}
fn test_array(a
int, b
int) {
var arr
[10][10]int
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
arr[i][j] = i * j
}
}
fn test_array(a
: int, b:
int) {
var arr:
[10][10]int
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
arr[i][j] = i * j
}
}
println("arr[", a, "][", b, "] = ", arr[a][b])
println("arr[", b, "][", a, "] = ", arr[b][a])
println("arr[", a, "][", b, "] = ", arr[a][b])
println("arr[", b, "][", a, "] = ", arr[b][a])
}
_examples/llvm/array_1.wa
浏览文件 @
d33639ac
...
...
@@ -5,26 +5,26 @@ const size = 32
type fff32 f32
var arr0 [size]fff32
var arr1 [size]fff32
var arr0
:
[size]fff32
var arr1
:
[size]fff32
fn test_init() {
for i := 0; i < size; i++ {
arr0[i] = fff32(i * i)
}
for i := 0; i < size; i++ {
arr0[i] = fff32(i * i)
}
}
fn getarr0a(arr
[size]fff32, i int)
fff32 {
return arr[i]
fn getarr0a(arr
: [size]fff32, i: int) =>
fff32 {
return arr[i]
}
fn getarr0b(arr
*[size]fff32, i int)
fff32 {
return arr[i]
fn getarr0b(arr
: *[size]fff32, i: int) =>
fff32 {
return arr[i]
}
fn main() {
test_init()
for i := 6; i < 20; i += 2 {
println(getarr0a(arr0, i), ", ", getarr0b(&arr0, i +
1))
}
test_init()
for i := 6; i < 20; i += 2 {
println(getarr0a(arr0, i), ", ", getarr0b(&arr0, i+
1))
}
}
_examples/llvm/array_2.wa
浏览文件 @
d33639ac
...
...
@@ -5,26 +5,26 @@ const size = 32
type fff32 f32
var arr1 [size]fff32
var arr1
:
[size]fff32
fn makearr0a(i
int)
[size]fff32 {
var r
[size]fff32
for j := 0; j < size; j++ {
r[j] = fff32(i * j)
}
return r
fn makearr0a(i
: int) =>
[size]fff32 {
var r:
[size]fff32
for j := 0; j < size; j++ {
r[j] = fff32(i * j)
}
return r
}
fn makearr0b(i
int)
*[size]fff32 {
for j := 0; j < size; j++ {
arr1[j] = 2000 - fff32(i *
j)
}
return &arr1
fn makearr0b(i
: int) =>
*[size]fff32 {
for j := 0; j < size; j++ {
arr1[j] = 2000 - fff32(i*
j)
}
return &arr1
}
fn main() {
r0, r1 := makearr0a(10), makearr0b(20)
for i := 6; i < 20; i += 2 {
println(r0[i], ", ", r1[i])
}
r0, r1 := makearr0a(10), makearr0b(20)
for i := 6; i < 20; i += 2 {
println(r0[i], ", ", r1[i])
}
}
_examples/llvm/bitwise_logic.wa
浏览文件 @
d33639ac
# Test the llvm backend.
# Test bitwise logic.
var a i64 = 0x55555555
var b i64 = 0x33333333
var c i16 = 0x5555
var d i16 = 0x3333
var e u8 = 0x55
var f u8 = 0x33
var a
:
i64 = 0x55555555
var b
:
i64 = 0x33333333
var c
:
i16 = 0x5555
var d
:
i16 = 0x3333
var e
:
u8 = 0x55
var f
:
u8 = 0x33
fn main() {
println("not ", 0x55555555, " = ", bw_not(0x55555555))
println("not ", 0xaaaaaaaa, " = ", bw_not(0xaaaaaaaa))
println(a, " and ", b, " = ", bw_and(a, b), "(", 0x11111111, ")")
println(c, " or ", d, " = ", bw_or(c, d), "(", 0x7777, ")")
println(e, " xor ", f, " = ", bw_xor(e, f), "(", 0x66, ")")
println("not ", 0x55555555, " = ", bw_not(0x55555555))
println("not ", 0xaaaaaaaa, " = ", bw_not(0xaaaaaaaa))
println(a, " and ", b, " = ", bw_and(a, b), "(", 0x11111111, ")")
println(c, " or ", d, " = ", bw_or(c, d), "(", 0x7777, ")")
println(e, " xor ", f, " = ", bw_xor(e, f), "(", 0x66, ")")
}
fn bw_not(a
u32)
u32 {
return ^a
fn bw_not(a
: u32) =>
u32 {
return ^a
}
fn bw_and(a
i64, b i64)
i64 {
return a & b
fn bw_and(a
: i64, b: i64) =>
i64 {
return a & b
}
fn bw_or(a
i16, b i16)
i16 {
return a | b
fn bw_or(a
: i16, b: i16) =>
i16 {
return a | b
}
fn bw_xor(a
u8, b u8)
u8 {
return a ^ b
fn bw_xor(a
: u8, b: u8) =>
u8 {
return a ^ b
}
_examples/llvm/compare.wa
浏览文件 @
d33639ac
...
...
@@ -2,34 +2,34 @@
# Test comparasions.
fn main() {
test_cmp0(20, 19)
test_cmp0(20, 20)
test_cmp1(-3, -3)
test_cmp1(-3, -4)
test_cmp2(10, 10)
test_cmp2(10, 10.0001)
test_cmp0(20, 19)
test_cmp0(20, 20)
test_cmp1(-3, -3)
test_cmp1(-3, -4)
test_cmp2(10, 10)
test_cmp2(10, 10.0001)
}
fn test_cmp0(a
u16, b
u16) {
if a > b {
println(a, " > ", b)
} else {
println(a, " <= ", b)
}
fn test_cmp0(a
: u16, b:
u16) {
if a > b {
println(a, " > ", b)
} else {
println(a, " <= ", b)
}
}
fn test_cmp1(a
i64, b
i64) {
if a <= b {
println(a, " <= ", b)
} else {
println(a, " > ", b)
}
fn test_cmp1(a
: i64, b:
i64) {
if a <= b {
println(a, " <= ", b)
} else {
println(a, " > ", b)
}
}
fn test_cmp2(a
f64, b
f64) {
if a != b {
println(a, " != ", b)
} else {
println(a, " == ", b)
}
fn test_cmp2(a
: f64, b:
f64) {
if a != b {
println(a, " != ", b)
} else {
println(a, " == ", b)
}
}
_examples/llvm/convert_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,26 +2,26 @@
# Test integer -> integer convertion.
fn main() {
println(i32(convert_i32_to_i16(65537)))
println(u32(convert_i32_to_u16(65537)))
println(convert_i16_to_i32(100))
println(convert_i16_to_i32(-100))
println(convert_u16_to_i32(100))
println(convert_u16_to_i32(65530))
println(i32(convert_i32_to_i16(65537)))
println(u32(convert_i32_to_u16(65537)))
println(convert_i16_to_i32(100))
println(convert_i16_to_i32(-100))
println(convert_u16_to_i32(100))
println(convert_u16_to_i32(65530))
}
fn convert_i32_to_i16(a
i32)
i16 {
return i16(a)
fn convert_i32_to_i16(a
: i32) =>
i16 {
return i16(a)
}
fn convert_i32_to_u16(a
i32)
u16 {
return u16(a)
fn convert_i32_to_u16(a
: i32) =>
u16 {
return u16(a)
}
fn convert_i16_to_i32(a
i16)
i32 {
return i32(a)
fn convert_i16_to_i32(a
: i16) =>
i32 {
return i32(a)
}
fn convert_u16_to_i32(a
u16)
i32 {
return i32(a)
fn convert_u16_to_i32(a
: u16) =>
i32 {
return i32(a)
}
_examples/llvm/convert_1.wa
浏览文件 @
d33639ac
# Test the llvm backend.
# Test 'floating point' -> 'floating point' convertion.
fn convert_f64_to_f32(a
f64)
f32 {
return f32(a)
fn convert_f64_to_f32(a
: f64) =>
f32 {
return f32(a)
}
fn main() {
println(convert_f64_to_f32(3.1415926535))
println(convert_f64_to_f32(3.1415926535))
}
_examples/llvm/convert_2.wa
浏览文件 @
d33639ac
...
...
@@ -2,16 +2,16 @@
# Test integer -> 'floating point' convertion.
fn main() {
println(convert_i16_to_f64(100))
println(convert_i16_to_f64(-100))
println(convert_u16_to_f64(100))
println(convert_u16_to_f64(65530))
println(convert_i16_to_f64(100))
println(convert_i16_to_f64(-100))
println(convert_u16_to_f64(100))
println(convert_u16_to_f64(65530))
}
fn convert_i16_to_f64(a
i16)
f64 {
return f64(a)
fn convert_i16_to_f64(a
: i16) =>
f64 {
return f64(a)
}
fn convert_u16_to_f64(a
u16)
f64 {
return f64(a)
fn convert_u16_to_f64(a
: u16) =>
f64 {
return f64(a)
}
_examples/llvm/convert_3.wa
浏览文件 @
d33639ac
...
...
@@ -2,18 +2,18 @@
# Test 'floating point' -> integer convertion.
fn main() {
println(convert_f64_to_i32(100.001))
println(convert_f64_to_u32(100.001))
println(convert_f64_to_i32(99.99))
println(convert_f64_to_u32(99.99))
println(convert_f64_to_i32(-100.001))
println(convert_f64_to_u32(-100.001))
println(convert_f64_to_i32(100.001))
println(convert_f64_to_u32(100.001))
println(convert_f64_to_i32(99.99))
println(convert_f64_to_u32(99.99))
println(convert_f64_to_i32(-100.001))
println(convert_f64_to_u32(-100.001))
}
fn convert_f64_to_i32(a
f64)
i32 {
return i32(a)
fn convert_f64_to_i32(a
: f64) =>
i32 {
return i32(a)
}
fn convert_f64_to_u32(a
f64)
u32 {
return u32(a)
fn convert_f64_to_u32(a
: f64) =>
u32 {
return u32(a)
}
_examples/llvm/float32.wa
浏览文件 @
d33639ac
...
...
@@ -3,27 +3,27 @@
type fff32 f32
fn getPi() fff32 {
return 3.1415926535
fn getPi()
=>
fff32 {
return 3.1415926535
}
fn getE() fff32 {
return 2.71828
fn getE()
=>
fff32 {
return 2.71828
}
fn minusf32(a
fff32)
fff32 {
return 0 - a
fn minusf32(a
: fff32) =>
fff32 {
return 0 - a
}
fn circle_area(r
fff32)
fff32 {
return r * r * 3.1415926
fn circle_area(r
: fff32) =>
fff32 {
return r * r * 3.1415926
}
fn main() {
println(getPi())
println(getE())
println(minusf32(getPi()))
println(minusf32(-1.3))
println(circle_area(1.1))
println(circle_area(getE()))
println(getPi())
println(getE())
println(minusf32(getPi()))
println(minusf32(-1.3))
println(circle_area(1.1))
println(circle_area(getE()))
}
_examples/llvm/global_constant.wa
浏览文件 @
d33639ac
...
...
@@ -5,11 +5,11 @@ const gbegin = 10
const gend = 20
fn test_global_consts() {
for i := gbegin; i < gend; i++ {
println(i, " - ", gbegin, " = ", i -
gbegin)
}
for i := gbegin; i < gend; i++ {
println(i, " - ", gbegin, " = ", i-
gbegin)
}
}
fn main() {
test_global_consts()
test_global_consts()
}
_examples/llvm/global_variable_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,18 +2,18 @@
# Test read/write global variables.
type ty0 struct {
v0
int
v1
float64
v0 :
int
v1 :
float64
}
var gv0 ty0 = ty0{5555, 3.1415926}
var gv1 [4]int = [4]int{81, 82, 17, 76}
var gv0
:
ty0 = ty0{5555, 3.1415926}
var gv1
:
[4]int = [4]int{81, 82, 17, 76}
fn test_global_variable() {
println("gv0: {", gv0.v0, ", ", gv0.v1, "}")
println("gv1: {", gv1[0], ", ", gv1[1], ", ", gv1[2], ", ", gv1[3], "}")
println("gv0: {", gv0.v0, ", ", gv0.v1, "}")
println("gv1: {", gv1[0], ", ", gv1[1], ", ", gv1[2], ", ", gv1[3], "}")
}
fn main() {
test_global_variable()
test_global_variable()
}
_examples/llvm/global_variable_1.wa
浏览文件 @
d33639ac
...
...
@@ -2,24 +2,24 @@
# Test read/write global variables.
type ty0 struct {
v0
int
v1
float64
v0 :
int
v1 :
float64
}
var gv0 ty0 = ty0{5555, 3.1415926}
var gv1 [4]int = [4]int{81, 82, 17, 76}
var gv0
:
ty0 = ty0{5555, 3.1415926}
var gv1
:
[4]int = [4]int{81, 82, 17, 76}
fn test_global_variable() {
gv0.v0 = 8888
gv0.v1 = 2.71828
gv1[0] += 2
gv1[1] += 3
gv1[2] += 4
gv1[3] += 5
println("gv0: {", gv0.v0, ", ", gv0.v1, "}")
println("gv1: {", gv1[0], ", ", gv1[1], ", ", gv1[2], ", ", gv1[3], "}")
gv0.v0 = 8888
gv0.v1 = 2.71828
gv1[0] += 2
gv1[1] += 3
gv1[2] += 4
gv1[3] += 5
println("gv0: {", gv0.v0, ", ", gv0.v1, "}")
println("gv1: {", gv1[0], ", ", gv1[1], ", ", gv1[2], ", ", gv1[3], "}")
}
fn main() {
test_global_variable()
test_global_variable()
}
_examples/llvm/heart.wa
浏览文件 @
d33639ac
# Test the llvm backend.
fn main {
a := 0.0
for y := 1.5; y > -1.5; y = y - 0.2 {
for x := -1.5; x < 1.5; x = x + 0.1 {
a = x*x + y*y - 1.0
if a*a*a < x*x*y*y*y {
print("@")
} else {
print(" ")
}
}
println()
}
fn main
()
{
a := 0.0
for y := 1.5; y > -1.5; y = y - 0.2 {
for x := -1.5; x < 1.5; x = x + 0.1 {
a = x*x + y*y - 1.0
if a*a*a < x*x*y*y*y {
print("@")
} else {
print(" ")
}
}
println()
}
}
_examples/llvm/loop_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,11 +2,11 @@
# Test loops.
fn main() {
test_loop(10)
test_loop(10)
}
fn test_loop(a i16) {
for i := i16(0); i < a; i++ {
println(i, " * ", i, " = ", i *
i)
}
fn test_loop(a
:
i16) {
for i := i16(0); i < a; i++ {
println(i, " * ", i, " = ", i*
i)
}
}
_examples/llvm/loop_1.wa
浏览文件 @
d33639ac
...
...
@@ -2,13 +2,13 @@
# Test loops.
fn main() {
test_loop(10, 10)
test_loop(10, 10)
}
fn test_loop(a
u64, b
u64) {
for i := u64(0); i < a; i++ {
for j := u64(0); j < b; j++ {
println(i, " * ", j, " = ", i *
j)
}
}
fn test_loop(a
: u64, b:
u64) {
for i := u64(0); i < a; i++ {
for j := u64(0); j < b; j++ {
println(i, " * ", j, " = ", i*
j)
}
}
}
_examples/llvm/multi_ret.wa
浏览文件 @
d33639ac
...
...
@@ -2,19 +2,19 @@
# Test multiple return values.
type pair struct {
a
f32
b
f32
a :
f32
b :
f32
}
fn calc()
([4]f32, pair, f32)
{
a := [4]f32{1.1, 2.11, 3.111, 4.1111}
b := pair{-10.123, 0.123}
return a, b, 2.4 + 1.3
fn calc()
=> ([4]f32, pair, f32)
{
a := [4]f32{1.1, 2.11, 3.111, 4.1111}
b := pair{-10.123, 0.123}
return a, b, 2.4 + 1.3
}
fn main() {
a, b, c := calc()
println("{", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}")
println("{", b.a, ", ", b.b, "}")
println(c)
a, b, c := calc()
println("{", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}")
println("{", b.a, ", ", b.b, "}")
println(c)
}
_examples/llvm/pointer.wa
浏览文件 @
d33639ac
# Test the llvm backend.
# Test read/write via a pointer.
var gint0 int = 100
var gint1 int = 200
var gint0
:
int = 100
var gint1
:
int = 200
fn get_int_addr(a
int)
*int {
if a > 0 {
return &gint0
} else {
return &gint1
}
fn get_int_addr(a
: int) =>
*int {
if a > 0 {
return &gint0
} else {
return &gint1
}
}
fn set_int(a *int) {
*a += 10
fn set_int(a
:
*int) {
*a += 10
}
fn test_pointer(a int) {
println(gint0, ", ", gint1)
p := get_int_addr(a)
set_int(p)
println(gint0, ", ", gint1)
fn test_pointer(a
:
int) {
println(gint0, ", ", gint1)
p := get_int_addr(a)
set_int(p)
println(gint0, ", ", gint1)
}
fn main() {
test_pointer(1)
test_pointer(-1)
test_pointer(1)
test_pointer(-1)
}
_examples/llvm/prime.wa
浏览文件 @
d33639ac
# Test the llvm backend.
fn main() {
for n := 2; n <= 30; n = n + 1 {
var isPrime
int = 1
for i := 2; i*i <= n; i = i + 1 {
if x := n % i; x == 0 {
isPrime = 0
}
}
if isPrime != 0 {
println(n)
}
}
for n := 2; n <= 30; n = n + 1 {
var isPrime:
int = 1
for i := 2; i*i <= n; i = i + 1 {
if x := n % i; x == 0 {
isPrime = 0
}
}
if isPrime != 0 {
println(n)
}
}
}
_examples/llvm/print_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,5 +2,5 @@
# Test printing strings.
fn main() {
println("您好,凹语言!\n\"Hello, wa-lang!\"")
println("您好,凹语言!\n\"Hello, wa-lang!\"")
}
_examples/llvm/print_1.wa
浏览文件 @
d33639ac
...
...
@@ -2,21 +2,21 @@
# Test printing integers.
fn main() {
println(test_calc1(6, 9, 8), ", ", 5, ", ", test_calc5(6, 9, 8))
println(test_calc1(6, 9, 8), ", ", 5, ", ", test_calc5(6, 9, 8))
}
fn test_calc0(a
i32, b i32, c i32)
i32 {
return (-a) * 5 / (b - c + 2)
fn test_calc0(a
: i32, b: i32, c: i32) =>
i32 {
return (-a) * 5 / (b - c + 2)
}
fn test_calc1(a
i32, b i32, c i32)
i32 {
return test_calc0(a, b, c)
fn test_calc1(a
: i32, b: i32, c: i32) =>
i32 {
return test_calc0(a, b, c)
}
fn test_calc4(a
u16, b u16, c u16)
u16 {
return (-a) * 5 / (b - c + 2)
fn test_calc4(a
: u16, b: u16, c: u16) =>
u16 {
return (-a) * 5 / (b - c + 2)
}
fn test_calc5(a
u16, b u16, c u16)
u16 {
return test_calc4(-a, b, c)
fn test_calc5(a
: u16, b: u16, c: u16) =>
u16 {
return test_calc4(-a, b, c)
}
_examples/llvm/print_2.wa
浏览文件 @
d33639ac
...
...
@@ -2,13 +2,13 @@
# Test printing float64 values.
fn main() {
println(5.44, ", ", test_calc3(6, 9, 8))
println(5.44, ", ", test_calc3(6, 9, 8))
}
fn test_calc2(a
f64, b f64, c f64)
f64 {
return (-a) * 5 / (b - c + 2)
fn test_calc2(a
: f64, b: f64, c: f64) =>
f64 {
return (-a) * 5 / (b - c + 2)
}
fn test_calc3(a
f64, b f64, c f64)
f64 {
return test_calc2(a, b, c)
fn test_calc3(a
: f64, b: f64, c: f64) =>
f64 {
return test_calc2(a, b, c)
}
_examples/llvm/print_3.wa
浏览文件 @
d33639ac
...
...
@@ -2,9 +2,9 @@
# Test printing small type values.
fn main() {
test_print(-100, 100, -100, 100, 5)
test_print(-100, 100, -100, 100, 5)
}
fn test_print(a
i16, b u16, c i8, d u8, e
f32) {
println(a, ", ", b, ", ", c, ", ", d, ", ", e/2)
fn test_print(a
: i16, b: u16, c: i8, d: u8, e:
f32) {
println(a, ", ", b, ", ", c, ", ", d, ", ", e/2)
}
_examples/llvm/shift.wa
浏览文件 @
d33639ac
# Test the llvm backend.
# Test logical/arithmetic shift operations.
var ga i32 = -15
var gb i32 = 15
var gc i64 = -15
var gd i64 = 15
var ge u16 = 0xffcc
var ga
:
i32 = -15
var gb
:
i32 = 15
var gc
:
i64 = -15
var gd
:
i64 = 15
var ge
:
u16 = 0xffcc
fn main() {
println(ga, " << ", 2, " = ", test_shl_0(ga, 2))
println(gb, " << ", 2, " = ", test_shl_1(gb, 2))
println(ga, " << ", 2, " = ", test_shl_2(ga, 2))
println(gc, " >> ", 2, " = ", test_ashr_0(gc, 2))
println(gd, " >> ", 2, " = ", test_ashr_1(gd, 2))
println(ge, " >> ", 2, " = ", test_lshr_0(ge, 2), "(", 0x3ff3, ")")
println(ge, " >> ", 2, " = ", test_lshr_1(ge, 2), "(", 0x3ff3, ")")
println(ga, " << ", 2, " = ", test_shl_0(ga, 2))
println(gb, " << ", 2, " = ", test_shl_1(gb, 2))
println(ga, " << ", 2, " = ", test_shl_2(ga, 2))
println(gc, " >> ", 2, " = ", test_ashr_0(gc, 2))
println(gd, " >> ", 2, " = ", test_ashr_1(gd, 2))
println(ge, " >> ", 2, " = ", test_lshr_0(ge, 2), "(", 0x3ff3, ")")
println(ge, " >> ", 2, " = ", test_lshr_1(ge, 2), "(", 0x3ff3, ")")
}
fn test_shl_0(a
i32, b i64)
i32 {
return a << b
fn test_shl_0(a
: i32, b: i64) =>
i32 {
return a << b
}
fn test_shl_1(a
i32, b i16)
i32 {
return a << b
fn test_shl_1(a
: i32, b: i16) =>
i32 {
return a << b
}
fn test_shl_2(a
i32, b u16)
i32 {
return a << b
fn test_shl_2(a
: i32, b: u16) =>
i32 {
return a << b
}
fn test_ashr_0(a
i64, b i64)
i64 {
return a >> b
fn test_ashr_0(a
: i64, b: i64) =>
i64 {
return a >> b
}
fn test_ashr_1(a
i64, b u32)
i64 {
return a >> b
fn test_ashr_1(a
: i64, b: u32) =>
i64 {
return a >> b
}
fn test_lshr_0(a
u16, b i32)
u16 {
return a >> b
fn test_lshr_0(a
: u16, b: i32) =>
u16 {
return a >> b
}
fn test_lshr_1(a
u16, b u8)
u16 {
return a >> b
fn test_lshr_1(a
: u16, b: u8) =>
u16 {
return a >> b
}
_examples/llvm/struct_0.wa
浏览文件 @
d33639ac
...
...
@@ -2,30 +2,30 @@
# Test read/write structs.
fn main() {
test_struct(10)
test_struct(11)
test_struct(2)
test_struct(13)
test_struct(0)
test_struct(10)
test_struct(11)
test_struct(2)
test_struct(13)
test_struct(0)
}
type t0 struct {
a
int64
b
int32
c
[4]f64
d
uint32
a :
int64
b :
int32
c :
[4]f64
d :
uint32
}
fn test_struct(a int) {
s0 := t0{17, -668, [4]f64{2.71828, 0.717, 3.14159}, 234}
switch a {
case 10:
println(s0.a)
case 11:
println(s0.b)
case 13:
println(s0.d)
default:
println(s0.c[a])
}
fn test_struct(a
:
int) {
s0 := t0{17, -668, [4]f64{2.71828, 0.717, 3.14159}, 234}
switch a {
case 10:
println(s0.a)
case 11:
println(s0.b)
case 13:
println(s0.d)
default:
println(s0.c[a])
}
}
_examples/llvm/struct_1.wa
浏览文件 @
d33639ac
...
...
@@ -2,30 +2,30 @@
# Test read/write structs.
fn main() {
test_struct1(10, 0, 0)
test_struct1(11, 1, 0)
test_struct1(2, 0, 1)
test_struct1(13, 1, 0)
test_struct1(2, 1, 0)
test_struct1(10, 0, 0)
test_struct1(11, 1, 0)
test_struct1(2, 0, 1)
test_struct1(13, 1, 0)
test_struct1(2, 1, 0)
}
type t0 struct {
a
int64
b
int32
c
[4]f64
d
uint32
a :
int64
b :
int32
c :
[4]f64
d :
uint32
}
fn test_struct1(a
int, b int, c
int) {
s0 := [2]t0{{11, -12, [4]f64{0.1, -0.2}, 13}, {21, -22, [4]f64{1.1, -1.2}, 24}}
switch a {
case 10:
println(s0[b].a)
case 11:
println(s0[b].b)
case 13:
println(s0[b].d)
default:
println(s0[b].c[c])
}
fn test_struct1(a
: int, b: int, c:
int) {
s0 := [2]t0{{11, -12, [4]f64{0.1, -0.2}, 13}, {21, -22, [4]f64{1.1, -1.2}, 24}}
switch a {
case 10:
println(s0[b].a)
case 11:
println(s0[b].b)
case 13:
println(s0[b].d)
default:
println(s0[b].c[c])
}
}
_examples/llvm/struct_2.wa
浏览文件 @
d33639ac
...
...
@@ -6,30 +6,30 @@ type fff32 f32
const size = 16
type struct_t0 struct {
arr0
[size]int
arr1
[size]fff32
arr0 :
[size]int
arr1 :
[size]fff32
}
var st0 struct_t0
var st0
:
struct_t0
fn test_init() {
for i := 0; i < size; i++ {
st0.arr0[i] = i * i
st0.arr1[i] = fff32(i) * 2.0
}
for i := 0; i < size; i++ {
st0.arr0[i] = i * i
st0.arr1[i] = fff32(i) * 2.0
}
}
fn getst0int(st0
struct_t0, i int)
int {
return st0.arr0[i]
fn getst0int(st0
: struct_t0, i: int) =>
int {
return st0.arr0[i]
}
fn getst0f32(st0
*struct_t0, i int)
fff32 {
return st0.arr1[i]
fn getst0f32(st0
: *struct_t0, i: int) =>
fff32 {
return st0.arr1[i]
}
fn main() {
test_init()
for i := 6; i < 14; i += 2 {
println(getst0int(st0, i), ", ", getst0f32(&st0, i +
1))
}
test_init()
for i := 6; i < 14; i += 2 {
println(getst0int(st0, i), ", ", getst0f32(&st0, i+
1))
}
}
_examples/llvm/struct_3.wa
浏览文件 @
d33639ac
...
...
@@ -4,32 +4,32 @@
const size = 16
type struct_t0 struct {
arr0
[size]int
arr1
[size]f32
arr0 :
[size]int
arr1 :
[size]f32
}
var st1 struct_t0
var st1
:
struct_t0
fn maket0a(i
int)
struct_t0 {
var r
struct_t0
for j := 0; j < 16; j++ {
r.arr0[j] = 100 - j - i
r.arr1[j] = 200.0 - f32(j +
i)
}
return r
fn maket0a(i
: int) =>
struct_t0 {
var r:
struct_t0
for j := 0; j < 16; j++ {
r.arr0[j] = 100 - j - i
r.arr1[j] = 200.0 - f32(j+
i)
}
return r
}
fn maket0b(i
int)
*struct_t0 {
for j := 0; j < 16; j++ {
st1.arr0[j] = 100 - j - i
st1.arr1[j] = 200.0 - f32(j +
i)
}
return &st1
fn maket0b(i
: int) =>
*struct_t0 {
for j := 0; j < 16; j++ {
st1.arr0[j] = 100 - j - i
st1.arr1[j] = 200.0 - f32(j+
i)
}
return &st1
}
fn main() {
r0, r1 := maket0a(20), maket0b(30)
for i := 0; i < 16; i++ {
println(r0.arr0[i], ", ", r0.arr1[i], " : ", r1.arr0[i], ", ", r1.arr1[i])
}
r0, r1 := maket0a(20), maket0b(30)
for i := 0; i < 16; i++ {
println(r0.arr0[i], ", ", r0.arr1[i], " : ", r1.arr0[i], ", ", r1.arr1[i])
}
}
_examples/llvm/unconditional_jump.wa
浏览文件 @
d33639ac
...
...
@@ -2,15 +2,15 @@
# Test unconditional jump.
fn main() {
test_jmp(4)
test_jmp(4)
}
fn test_jmp(a i32) {
for {
if a > 10 {
return
}
println(a)
a++
}
fn test_jmp(a
:
i32) {
for {
if a > 10 {
return
}
println(a)
a++
}
}
_examples/prime/src/benpkg/myprint.wa
浏览文件 @
d33639ac
fn PrintInt(x int) {
print(x, " ")
fn PrintInt(x
:
int) {
print(x, " ")
}
_examples/prime/src/check.wa
浏览文件 @
d33639ac
# 版权 @2022 凹语言™ 作者。保留所有权利。
fn isPrime(n
int)
bool {
for i := 2; i*i <= n; i = i + 1 {
if n%i == 0 {
return false
}
}
return true
fn isPrime(n
: int) =>
bool {
for i := 2; i*i <= n; i = i + 1 {
if n%i == 0 {
return false
}
}
return true
}
_examples/prime/src/main.wa
浏览文件 @
d33639ac
...
...
@@ -4,17 +4,17 @@ import "examples/prime/benpkg"
import "joypkg"
fn main() {
for n := 2; n <= 100; n = n + 1 {
if isPrime(n) {
benpkg.PrintInt(n)
}
}
println("")
for n := 2; n <= 100; n = n + 1 {
if isPrime(n) {
benpkg.PrintInt(n)
}
}
println("")
for n := 2; n <= 100; n = n + 1 {
if isPrime(n) {
joypkg.PrintIntComma(n)
}
}
println("")
for n := 2; n <= 100; n = n + 1 {
if isPrime(n) {
joypkg.PrintIntComma(n)
}
}
println("")
}
_examples/prime/vendor/joypkg/myprint.wa
浏览文件 @
d33639ac
fn PrintIntComma(x int) {
print(x, ",")
fn PrintIntComma(x
:
int) {
print(x, ",")
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录