diff --git a/devel/lib/loops.h b/devel/lib/loops.h index 401c249..4fa963e 100644 --- a/devel/lib/loops.h +++ b/devel/lib/loops.h @@ -20,6 +20,3 @@ // Do until condition is met #define until(what) while(!(what)) -// Because why the hell not -#define whilst(what) while((what)) - diff --git a/devel/lib/yeolde.h b/devel/lib/yeolde.h new file mode 100644 index 0000000..77afa71 --- /dev/null +++ b/devel/lib/yeolde.h @@ -0,0 +1,29 @@ +#pragma once + +/** + Ye Olde Control Structures +*/ + +#include "loops.h" + +#define whilst(what) while((what)) +#define when(what) if((what)) +#define otherwise else +#define commence { +#define then { +#define cease } +#define choose(what) switch((what)) +#define option case +#define shatter break +#define replay continue +#define equals == +#define is == +#define be = +#define over > +#define above > +#define under < +#define below < +#define let /**/ +#define raise(what) (what)++ + +#define number int diff --git a/devel/lib_tests/test_loops_visual.c b/devel/lib_tests/test_loops_visual.c index d604d56..2fd1a33 100644 --- a/devel/lib_tests/test_loops_visual.c +++ b/devel/lib_tests/test_loops_visual.c @@ -12,15 +12,15 @@ void main() printf("\n"); int i = 0; until (i == 100) i++; - - whilst (i > 0) { + + until (i == 0) { i--; printf("i = %d\n", i); } - + printf("\n"); - + loop(moo, 7) { printf("moo = %d\n", moo); } -} \ No newline at end of file +} diff --git a/devel/lib_tests/test_yeolde.c b/devel/lib_tests/test_yeolde.c new file mode 100644 index 0000000..823fed0 --- /dev/null +++ b/devel/lib_tests/test_yeolde.c @@ -0,0 +1,34 @@ +#include +#include +#include +#include + +#include "lib/loops.h" +#include "lib/yeolde.h" + +void main() +commence + let number a be 0; + whilst (a under 13) + commence + raise (a); + + when (a is 5) + then + printf("A is ugly 5\n"); + replay; + cease; + + choose (a) + commence + option 1: + printf("A is 1\n"); + shatter; + option 2: + printf("A is 2\n"); + shatter; + option 3: + printf("Neither 1 nor 2\n"); + cease; + cease; +cease diff --git a/devel/lib_tests/x b/devel/lib_tests/x new file mode 100755 index 0000000..532da17 Binary files /dev/null and b/devel/lib_tests/x differ