added some code for the byte-character literal support.

enhanced value comparison routines
This commit is contained in:
2020-12-09 18:07:20 +00:00
parent 2e25911bfd
commit e983d7701a
13 changed files with 857 additions and 185 deletions

View File

@ -1,4 +1,5 @@
@pragma entry main
@pragma implicit off
@include "ensure.inc";
@ -22,13 +23,103 @@ function call_by_ref_3(&x)
function main()
{
x = 20;
y = 90;
r = call_by_ref_1(x, y, z);
ensure (r, 1800, @SCRIPTNAME, @SCRIPTLINE);
ensure (x, 20);
ensure (y, 90);
ensure (z, "hello, world");
{
ensure ((@nil == 'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil != 'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil > 'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil < 'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil >= 'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil <= 'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil == @b'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil != @b'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil > @b'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil < @b'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil >= @b'A'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@nil <= @b'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (('A' == @b'A'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (('\u00FF' == @b'\xFF'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (("10" == 10), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (("10" == 10.00), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (("10.0" == 10), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure (("10.00" == 10), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@b"10" == 10), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@b"10" == 10.00), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@b"10.0" == 10), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((@b"10.00" == 10), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 < '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 <= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 > '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 >= '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 == '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 != '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 < '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 <= '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 > '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 >= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 == '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 != '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 < '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 <= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 > '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 >= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 == '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 != '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 < '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 <= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 > '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 >= '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 == '8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 != '8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 < @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 <= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 > @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 >= @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 == @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((79 != @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 < @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 <= @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 > @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 >= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 == @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((99 != @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 < @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 <= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 > @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 >= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 == @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8 != @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 < @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 <= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 > @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 >= @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 == @b'8'), 1, @SCRIPTNAME, @SCRIPTLINE);
ensure ((8.00 != @b'8'), 0, @SCRIPTNAME, @SCRIPTLINE);
}
{
@local x, y, z, r;
x = 20;
y = 90;
r = call_by_ref_1(x, y, z);
ensure (r, 1800, @SCRIPTNAME, @SCRIPTLINE);
ensure (x, 20);
ensure (y, 90);
ensure (z, "hello, world");
}
## TODO: add a new special word, @FILENAME, @FILELINE, @LINE <--- which are understood by the parser and swapped to the actual value
## @SCRIPTNAME, @SCRIPTLINE doesn't tell the main file.
@ -40,7 +131,7 @@ function main()
}
{
@local b;
@local b, r;
b[1] = 1;
r = call_by_ref_2(99, b);
ensure (r, 99);
@ -48,7 +139,7 @@ function main()
}
{
@local b;
@local b, r;
b[1] = 1;
r = hawk::call("call_by_ref_2", 99, b);
ensure (r, 99);
@ -122,7 +213,7 @@ function main()
}
{
@local a, b;
@local a, b, c;
a = hawk::array();
a[10][20][30] = 20;
b[12][20][30] = 20;
@ -141,6 +232,16 @@ function main()
ensure (((10,30,30) in c), 0, @SCRIPTNAME, @SCRIPTLINE);
}
{
@local a;
a = hawk::array(1,2,3);
ensure (a[1], 1, @SCRIPTNAME, @SCRIPTLINE);
ensure (a[2], 2, @SCRIPTNAME, @SCRIPTLINE);
ensure (a[3], 3, @SCRIPTNAME, @SCRIPTLINE);
ensure (length(a), 3, @SCRIPTNAME, @SCRIPTLINE);
ensure (hawk::typename(a), "array", @SCRIPTNAME, @SCRIPTLINE);
}
{
# concatenation operator