#include "ink.h" int main(int argc, char** argv) { struct context* ctx; ctx = ink_make_default_context(); ink_compile( ctx, "macro five do 1 1 1 1 1 + + + + end" ); ink_compile( ctx, "macro tens do five five + end" ); ink_compile( ctx, "macro hundreds do tens tens tens tens tens tens tens tens tens tens + + + + + + + + + end" ); ink_compile( ctx, "macro thousand do hundreds hundreds hundreds hundreds hundreds hundreds hundreds hundreds hundreds hundreds + + + + + + + + + end" ); int coro = ink_compile( ctx, "thousand thousand * thousand / thousand thousand * thousand / thousand / * print_int" ); ctx->routines[coro].panic = 0; int increment = 1 << 16; int counter = increment; int c; while(ink_can_run(ctx)) { for(c = 0; c < 16; ++c) ink_step_everyone(ctx); if(ctx->steps < counter) { ink_gc(ctx); counter += increment; } } return (ctx->routines[coro].panic != INK_ROUTINE_SUCCESS && ctx->routines[coro].panic != INK_ROUTINE_CAN_REUSE) || ctx->steps > 1000; }