From 0fe8a0744d6c2cfa5c23ebd3164d6c3712e04391 Mon Sep 17 00:00:00 2001 From: Brian Tiffin Date: Thu, 31 Aug 2017 04:29:00 +0000 Subject: example.u created online with Bitbucket --- tests/examplefiles/example.u | 659 ++++++++----------------------------------- 1 file changed, 111 insertions(+), 548 deletions(-) diff --git a/tests/examplefiles/example.u b/tests/examplefiles/example.u index 42c85902..92c45365 100644 --- a/tests/examplefiles/example.u +++ b/tests/examplefiles/example.u @@ -1,548 +1,111 @@ - // This is a one line comment. - /* an inner comment */ - - /* nested /* comments */ */ - - /* - /* - Multi-line. - */ - */ - -// Binary blob escape. -//"some text \B(3)("\") ouhyeah" == "\"\\\""; -"some text \B(3)("\") ouhyeah" == "\"\\\""; -'some text \B(3)('\') ouhyeah' == '\'\\\''; - -//"\B(4)()"'()"; -"\B(4)()"'()"; -'\B(4)()'"()'; - -//blob size limits -"hey ! \B(0)() oh !" - -//blob format is wrong -"hey ! \B(2)(aaa) oh !" -"hey ! \B(100)(aaa) oh !" - -//multiple blob in a string -"hey ! \B(3)(aaa) hey ! \B(3)(aaa) oh !" - -// multiple digits blob size -"hey ! \B(10)(aaaaaaaaaa) !" -"hey ! \B(10)(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) !" -"hey ! \B(100)(a) !" - -// multiple digits blob size -"hey ! \B(007)(aaaaaaa) !" -"hey ! \B(007)(aa) !" -"hey ! \B(007)(aaaaaaaaaaaaaaaaaa) !" - -// deprecated and restricted keyworks -emit Event.new; -static int main(); - -loopn (2) {echo("a");}; - -foreach (var i : [1,2,3,4]) { - echo(i); -}; - -function() {}; - -var 'if'; -var this.'else'; - -var '%x'; -var '1 2 3'; -var this.'[]'; - -// angles -pi == 180deg; -pi == 200grad; - -// Dictionary -[ => ]; // The empty dictionary - -// duration -1d == 24h; -0.5d == 12h; -1h == 60min; -1min == 60s; -1s == 1000ms; - -1s == 1; -1s 2s 3s == 6; -1s 1ms == 1.001; -1ms 1s == 1.001; - - - 1 == 1; - 1 == 1.0; - 1.2 == 1.2000; - 1.234e6 == 1234000; - 1e+11 == 1E+11; - 1e10 == 10000000000; - 1e30 == 1e10 * 1e10 * 1e10; - - -0.000001; - -0.0000001; - -0.00000000001; - -1e+3; - -1E-5; - - -1.; -// [00004701:error] !!! syntax error: unexpected ; - - 0x2a == 42; - 0x2A == 42; - 0xabcdef == 11259375; - 0xABCDEF == 11259375; -0xFFFFFFFF == 4294967295; - - -//123foo; -//[00005658:error] !!! syntax error: invalid token: '123foo' -//12.3foo; -//[00018827:error] !!! syntax error: invalid token: '12.3foo' -0xabcdef; -//[00060432] 11259375 -//0xabcdefg; -//[00061848:error] !!! syntax error: invalid token: '0xabcdefg' - - -[]; // The empty list -[1, 2, 3]; - -// Special characters. -"\"" == "\""; -"\\" == "\\"; - -// ASCII characters. -"\a" == "\007"; "\a" == "\x07"; -"\b" == "\010"; "\b" == "\x08"; -"\f" == "\014"; "\f" == "\x0c"; -"\n" == "\012"; "\n" == "\x0a"; -"\r" == "\015"; "\r" == "\x0d"; -"\t" == "\011"; "\t" == "\x09"; -"\v" == "\013"; "\v" == "\x0b"; - -// Octal escapes. -"\0" == "\00"; "\0" == "\000"; -"\0000" == "\0""0"; -"\062\063" == "23"; - -// Hexadecimal escapes. -"\x00" == "\0"; -"\x32\x33" == "23"; - - - -"foo" "bar" "baz" == "foobarbaz"; - -// Tuples -(); -[00000000] () -(1,); -[00000000] (1,) -(1, 2); -[00000000] (1, 2) -(1, 2, 3, 4,); -[00000000] (1, 2, 3, 4) - -function Global.verboseId(var x) -{ - echo(x) | x -}|; -class verboseId(Global).math : verboseId(Math) -{ -}; - -{ - for (3) - { - sleep(1s); - echo("ping"); - }, - sleep(0.5s); - for (3) - { - sleep(1s); - echo("pong"); - }, -}; - - 1 + 1 == 2; - 1 - 2 == -1; - 2 * 3 == 6; - 10 / 2 == 5; - 2 ** 10 == 1024; - -(1 + 2) == -3; - 1 + 2 * 3 == 7; - (1 + 2) * 3 == 9; - -2 ** 2 == -4; - - - - - 1 == 1; - -a = b -a += b -a -= b -a *= b -a /= b -a %= b -a ^= b - - -var value = 0|; -var valueAlias = value|; -value += 10; -valueAlias; -var myList = []|; -var myList.specialFeature = 42|; -myList += [1, 2, 3]; -myList.specialFeature; -var myOtherList = myList + [4, 5]; -myOtherList.specialFeature; -var something = []|; -var somethingElse = something|; -something += [1, 2]; -somethingElse += [3, 4]; -something; - - -class Counter -{ - var count = 0; - function init (n) { var this.count = n }; - // Display the value, and the identity. - function asString() { "%s @ %s" % [count, uid ] }; - function '+'(var n) { new(count + n) }; - function '-'(var n) { new(count - n) }; -}|; - - -class ImmutableCounter : Counter -{ - function '+='(var n) { this + n }; - function '-='(var n) { this - n }; -}|; - -var ic1 = ImmutableCounter.new(0); -var ic2 = ic1; - -ic1 += 1; -ic1; -ic2; - - -a << b -a >> b -a ^ b - -4 << 2 == 16; -4 >> 2 == 1; - -!a -a && b -a || b - -true && true; -true || false; -!true == false; -true || (1 / 0); -(false && (1 / 0)) == false; - -a == b -a != b -a === b -a !== b -a ~= b -a =~= b -a < b -a <= b -a > b -a >= b - -assert{ - ! (0 < 0); - 0 <= 0; - 0 == 0; - 0 !== 0; -}; - -a in b -a not in b -a[args] -a[args] = v - -1 in [0, 1, 2]; -3 not in [0, 1, 2]; - -"one" in ["zero" => 0, "one" => 1, "two" => 2]; -"three" not in ["zero" => 0, "one" => 1, "two" => 2]; - -a.b -a.b(args) -a->b -a->b = v -a.&b - -var obj = Object.new|; -function obj.f() { 24 }|; - - -var f = function(a, b) { - echo(b + a); -}| -f(1, 0); - - -function g3() -{ - return; // Stop execution at this point and return void - echo(0); // This is not executed -}| - -Object.setProperty, to define/set a property. -Object.getProperty, to get a property. -Object.removeProperty, to delete a property. -Object.hasProperty, to test for the existence of a property. -Object.properties, to get all the properties of a slot. - -enum Suit -{ - hearts, - diamonds, - clubs, - spades, // Last comma is optional -}; - -for (var suit in Suit) - echo("%s the ace of %s." % [find_ace(suit), suit]); - -switch ( ("foo", [1, 2]) ) -{ - // The pattern does not match the values of the list. - case ("foo", [2, 1]): - echo("fail"); - - // The pattern does not match the tuple. - case ["foo", [1, 2]]: - echo("fail"); - - // The pattern matches and binds the variable "l" - // but the condition is not verified. - case ("foo", var l) if l.size == 0: - echo("fail"); - - // The pattern matches. - case ("foo", [var a, var b]): - echo("foo(%s, %s)" % [a, b]); -}; -//[00000000] *** foo(1, 2) - -{ - ["b" => var b, "a" => var a] = ["a" => 1, "b" => 2, "c" => 3]; - echo("a = %d, b = %d" % [a, b]); -}; -//[00000000] *** a = 1, b = 2 - - -switch (["speed" => 2, "time" => 6s]) -{ - case ["speed" => var s] if s > 3: - echo("Too fast"); - case ["speed" => var s, "time" => var t] if s * t > 10: - echo("Too far"); -}; -//[00000000] *** Too far - - -try -{ - throw ("message", 0) -} -catch (var e if e.isA(Exception)) -{ - echo(e.message) -} -catch ((var msg, var value) if value.isA(Float)) -{ - echo("%s: %d" % [msg, value]) -}; -//[00000000] *** message: 0 - - -{ - var e = Event.new; - at (e?(var msg, var value) if value % 2 == 0) - echo("%s: %d" % [msg, value]); - - // Does not trigger the "at" because the guard is not verified. - e!("message", 1); - - // Trigger the "at". - e!("message", 2); -}; -//[00000000] *** message: 2 - -for (var i = 0; i < 8; i++) -{ - if (i % 2 != 0) - continue; - echo(i); -}; - -do (1024) -{ - assert(this == 1024); - assert(sqrt == 32); - setSlot("y", 23); -}.y; - -{ - var n = 10|; - var res = []|; - loop;{ - n--; - res << n; - if (n == 0) - break - }; - res -} - - -{ - var n = 10|; - var res = []|; - loop|{ - n--; - res << n; - if (n == 0) - break - }; - res -} - - -var j = 3| -while (0 < j) -{ - echo(j); - j--; -}; - - -{ - var i = 4| - while| (true) - { - i -= 1; - echo ("in: " + i); - if (i == 1) - break - else if (i == 2) - continue; - echo ("out: " + i); - }; -}; - - - -function test(e) -{ - try - { throw e; } - catch (0) - { echo("zero") } - catch ([var x, var y]) - { echo(x + y) } -} | {}; - -try { echo("try") } -catch { echo("catch")} -else { echo("else")}; - - -try -{ - echo("inside"); -} -finally -{ - echo("finally"); -}; -//[00000001] *** inside -//[00000002] *** finally - -at (e?(var start) ~ 1s) - echo("in : %s" % (time - start).round) -onleave - echo("out: %s" % (time - start).round); - -// This emission is too short to trigger the at. -e!(time); - -// This one is long enough. -// The body triggers 1s after the emission started. -e!(time) ~ 2s; -//[00001000] *** in : 1 -//[00002000] *** out: 2 - - -timeout (2.1s) - every (1s) - echo("Are you still there?"); -//[00000000] *** Are you still there? -//[00001000] *** Are you still there? -//[00002000] *** Are you still there? - - every| (1s) - { - echo("aba"); - }; - -for, (var i = 3; 0 < i; i -= 1) -{ - echo (i); -}; - - -for& (var i: [0, 1, 2]) -{ - echo (i * i); -}; - -loop,{ -}; - - -waituntil (e?(1, var b)); - -whenever (e?("arg", var arg) if arg % 2) - echo("e (%s) on" % arg) -else - echo("e off"); - - - while, (i) - { - var j = i -= 1; - }| - - -var y = 0; -{ - sleep(0.5s); - y = 100 smooth:3s, -}, - - - - +version U12.1.00 +uid version.u1-1494453463-0 +impl local +global 1 + 0,000005,version,0 + + +proc version + local 0,000000,tab + local 1,000000,find + local 2,000000,many + con 0,010000,8,126,145,162,163,151,157,156,040 + con 1,002000,1,8 + con 2,020000,11,060,061,062,063,064,065,066,067,070,071,056 + con 3,002000,1,1 + declend + filen version.icn + line 23 + colm 11 + synt any + mark L1 + line 25 + colm 4 + synt any + keywd version + line 25 + colm 13 + synt any + bscan + mark L2 + mark L3 + var 0 + pnull + var 1 + str 0 + line 26 + colm 15 + synt any + invoke 1 + int 1 + line 26 + colm 28 + synt any + plus + line 26 + colm 10 + synt any + invoke 1 + line 26 + colm 33 + synt any + esusp + goto L4 +lab L3 + line 26 + colm 35 + synt any + pfail +lab L4 + unmark +lab L2 + var 0 + var 2 + cset 2 + line 27 + colm 15 + synt any + invoke 1 + line 27 + colm 10 + synt any + invoke 1 + line 27 + colm 32 + synt any + bscan + mark L5 + var 0 + pnull + int 3 + line 27 + colm 45 + synt any + neg + line 27 + colm 44 + synt any + invoke 1 + line 27 + colm 34 + synt any + pret +lab L5 + synt any + pfail + line 27 + colm 32 + synt any + escan + line 25 + colm 13 + synt any + escan + unmark +lab L1 + pnull + line 30 + colm 1 + synt any + pfail + end \ No newline at end of file -- cgit v1.2.1