A minimalistic programming language written in C89.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 regels
1.0 KiB

#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;
}