From 26c5b2be3918e7e27f9ae0616f3a3a629190b19c Mon Sep 17 00:00:00 2001 From: Drahflow Date: Mon, 10 Dec 2012 14:30:07 +0100 Subject: Quicksort --- examples/non-working/cat.ey | 13 ----------- examples/non-working/macro.ey | 51 ------------------------------------------ examples/non-working/tokens.ey | 5 ----- examples/working/cat.ey | 7 ++++++ examples/working/macro.ey | 51 ++++++++++++++++++++++++++++++++++++++++++ examples/working/qsort.ey | 23 +++++++++++++++++++ 6 files changed, 81 insertions(+), 69 deletions(-) delete mode 100644 examples/non-working/cat.ey delete mode 100644 examples/non-working/macro.ey delete mode 100644 examples/non-working/tokens.ey create mode 100644 examples/working/cat.ey create mode 100644 examples/working/macro.ey create mode 100644 examples/working/qsort.ey (limited to 'examples') diff --git a/examples/non-working/cat.ey b/examples/non-working/cat.ey deleted file mode 100644 index 23b5786..0000000 --- a/examples/non-working/cat.ey +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env elymas - -/stdlib import - -4096 malloc =buf -0 =len - -0 \argv 0 open =f -{ - f buf 4096 read =len - f buf len write -} len while -f close diff --git a/examples/non-working/macro.ey b/examples/non-working/macro.ey deleted file mode 100644 index fdaf0cf..0000000 --- a/examples/non-working/macro.ey +++ /dev/null @@ -1,51 +0,0 @@ -# an alternative to }, moving the top stack element -# into closure storage and pushing it back before -# executing the block - -{ "}" | * - { /f deff /x defv - { x f } - } quoted { } { * } ? * -} "}0" defq - -5 { { dump }0 } * /dumpfive deff -5 { dump }0 /dumpfivetwo deff - -7 dumpfive - -7 dumpfivetwo - - - -# import members of other objects into local scope - -{ - "_" | "-021" | ".|" | "-01" | |deff -} /usef defq - - -# codewalker - -{ "lol" dump } /lol deff - -{ - 1 /cont defv - - { cont } { 0 { - exe /walkelem deff - { sys .out .writestr } /out deff - - _ { { " " out } rep }0 /indent deff - { 2 add walkelem }0 /walk deff - - _ code [ { - indent [ "\"" -102 "\"\n" ] |out each - } { - indent _ sym _ out - "{" streq { 0 =cont |lol } { - } ? * - "\n" out - } { - blk |walk each - } ] * * - } * } loop -} /codewalk defq - -{ f "t" g h { a b { c d } e } codewalk } * diff --git a/examples/non-working/tokens.ey b/examples/non-working/tokens.ey deleted file mode 100644 index 24ba14e..0000000 --- a/examples/non-working/tokens.ey +++ /dev/null @@ -1,5 +0,0 @@ -< - { dump } /a deff -> /std defv - -"dump" std .a diff --git a/examples/working/cat.ey b/examples/working/cat.ey new file mode 100644 index 0000000..45f354d --- /dev/null +++ b/examples/working/cat.ey @@ -0,0 +1,7 @@ +#!/usr/bin/env elymas + +1 { } { + 4096 sys .in .read + _ sys .out .writeall + len +} loop diff --git a/examples/working/macro.ey b/examples/working/macro.ey new file mode 100644 index 0000000..fdaf0cf --- /dev/null +++ b/examples/working/macro.ey @@ -0,0 +1,51 @@ +# an alternative to }, moving the top stack element +# into closure storage and pushing it back before +# executing the block + +{ "}" | * + { /f deff /x defv + { x f } + } quoted { } { * } ? * +} "}0" defq + +5 { { dump }0 } * /dumpfive deff +5 { dump }0 /dumpfivetwo deff + +7 dumpfive - +7 dumpfivetwo - + + +# import members of other objects into local scope + +{ + "_" | "-021" | ".|" | "-01" | |deff +} /usef defq + + +# codewalker + +{ "lol" dump } /lol deff + +{ + 1 /cont defv + + { cont } { 0 { + exe /walkelem deff + { sys .out .writestr } /out deff + + _ { { " " out } rep }0 /indent deff + { 2 add walkelem }0 /walk deff + + _ code [ { + indent [ "\"" -102 "\"\n" ] |out each + } { + indent _ sym _ out + "{" streq { 0 =cont |lol } { - } ? * + "\n" out + } { + blk |walk each + } ] * * + } * } loop +} /codewalk defq + +{ f "t" g h { a b { c d } e } codewalk } * diff --git a/examples/working/qsort.ey b/examples/working/qsort.ey new file mode 100644 index 0000000..c7bf93c --- /dev/null +++ b/examples/working/qsort.ey @@ -0,0 +1,23 @@ +[ 23 3 43 37 89 11 21 4 35 94 28 36 96 95 51 7 59 57 48 68 85 73 6 67 71 92 76 14 31 18 64 30 9 41 34 86 33 75 70 81 27 93 8 100 55 39 1 61 42 45 29 5 17 79 13 90 49 99 91 69 46 54 16 53 40 62 60 20 88 97 12 74 15 65 72 80 50 44 47 24 25 2 58 52 78 83 10 84 98 19 56 87 26 32 22 63 82 77 0 38 66 ] /data defv + +{ "=[]" | -31*21*310*210* } /swap deff + +{ /a defv /end defv /start defv + end a * /pivot defv + start /store defv + + start end 1 sub range { /i defv + i a * pivot lt { + store _ i a swap + 1 add =store + } rep + } each + + store _ end a swap + _ 1 sub start -0101 lt { a qsort } { -- } ? * + 1 add end -1010 lt { a qsort } { -- } ? * +} /qsort deff + +{ _ len _ 0 gt { 1 sub 0 -012 qsort } rep } /sort deff + +data _ sort dump -- cgit v1.2.3