Files
hawk/t/h-016.hawk
hyung-hwan 405510d33a
All checks were successful
continuous-integration/drone/push Build is passing
implemented the function literal syntax
2026-02-13 19:24:13 +09:00

133 lines
2.2 KiB
Plaintext

@pragma implicit on
@pragma pedantic on
@pragma xcall on
@pragma entry main
@include "tap.inc";
@global g;
@global G = func(a, b) {
return a * b
}
@global H = @[ \
func(a, b) { return a - b }, \
func(a, b) { return a + b } \
]
func x(a1, a2, a3, a, b) {
@local y;
y.a = func(a, b) { return a * b }
y.b = func(a) { return a * 4 }
return y
}
func y(f, v) {
return f(v)
}
func xx(a1, a2, a3, a) {
@local y, m, d, q1, q2, q3, q4, q5, q6,q7, q8, q9;
m = 10
d = 20
{
@local q4, q5;
q4 = 10;
q5 = 20;
q1 = 1
q2 = 1
q3 = 1
q6 = 1
q7 = 1
q8 = 1
q9 = 1
}
q4 = 2
q5 = 2
y.a = func(a, b) {
@local t = 99;
@local t2;
@local t3 = 88;
@local t4 = 88;
t = 88;
t2 = 999;
{ @local q1, q2; q2 = 44;
q1 = func(t, c) {
return t + c + t * c
};
q1(777, 8888)
}
return a * b + t
}
y.b = func(a) {
@local x , y, a1
{
@local x = 1 , y = 2, a1 = 3;
@local a2 = 4 , a3 = 5, a4 = 6;
@local a5 = 7, a6 = 8, a7 = 9, a8 = 10, a9 = 11, a10 = 12,a11 = 13, a12
a12=9999
}
x = 10
y = 20
a1 = 40
return a * 4
};
{
@local q4, q5 = 887;
q4 = 10;
q5 = 20;
}
return y
}
func main() {
@local l, m, t;
g = func(x, y) { return x + y; };
l = func(x) { return x * 2; };
n = func(z) { return z - 1; };
tap_ensure(g(2, 3), 5, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(l(4), 8, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(n(10), 9, @SCRIPTNAME, @SCRIPTLINE);
m = @{};
m.f = func(a, b) { return a * b; };
tap_ensure(m.f(3, 4), 12, @SCRIPTNAME, @SCRIPTLINE);
t = x(10, 20)
tap_ensure(t.a(90, 10), 900, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(t.b(90), 360, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(y(func(a) { @local t = a * a; return t + t }, 30), 1800, @SCRIPTNAME, @SCRIPTLINE);
m = @[ \
func(a, b) { return a - b }, \
func(a, b) { return a + b } \
]
tap_ensure(m[1](10,20), -10, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(m[2](10,20), 30, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(H[1](5,20), -15, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(H[2](5,20), 25, @SCRIPTNAME, @SCRIPTLINE);
m = xx(10, 20)
tap_ensure(m.a(90, 10), 988, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(m.b(90), 360, @SCRIPTNAME, @SCRIPTLINE);
tap_end();
}