提交 d33639ac 编写于 作者: B Ben Shi

Format several .wa files.

上级 e7ad43e8
......@@ -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)
}
}
......@@ -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])
}
......@@ -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))
}
}
......@@ -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])
}
}
# 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
}
......@@ -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)
}
}
......@@ -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)
}
# 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))
}
......@@ -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)
}
......@@ -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)
}
......@@ -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()))
}
......@@ -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()
}
......@@ -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()
}
......@@ -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()
}
# 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()
}
}
......@@ -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)
}
}
......@@ -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)
}
}
}
......@@ -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)
}
# 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)
}
# 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)
}
}
}
......@@ -2,5 +2,5 @@
# Test printing strings.
fn main() {
println("您好,凹语言!\n\"Hello, wa-lang!\"")
println("您好,凹语言!\n\"Hello, wa-lang!\"")
}
......@@ -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)
}
......@@ -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)
}
......@@ -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)
}
# 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
}
......@@ -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])
}
}
......@@ -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])
}
}
......@@ -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))
}
}
......@@ -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])
}
}
......@@ -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++
}
}
fn PrintInt(x int) {
print(x, " ")
fn PrintInt(x: int) {
print(x, " ")
}
# 版权 @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
}
......@@ -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("")
}
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.
先完成此消息的编辑!
想要评论请 注册