void init_special_form_handlers(LakeCtx *ctx) { /* define_handler(ctx, "load", &load_special_form); */ define_handler(ctx, "quote", &_quote); define_handler(ctx, "and", &_and); define_handler(ctx, "or", &_or); define_handler(ctx, "if", &_if); define_handler(ctx, "when", &_when); define_handler(ctx, "cond", &_cond); define_handler(ctx, "set!", &_setB); define_handler(ctx, "define", &_define); define_handler(ctx, "lambda", &_lambda); /* define_handler(ctx, "let", &_let); */ /* define_handler(ctx, "let!", &_letB); */ /* define_handler(ctx, "letrec", &_letrec); */ }
int main (int argc, char const * argv []) { static char const * optv [] = { "ceh:p:qv", PUTOPTV_S_FUNNEL, "OpenWRT Makefile Tool", "c\tcontinuation line output", "e\tenumerate fields", "h s\thandler name is (s) [" LITERAL (OWRT_NAME_HANDLER) "]", "p s\tpackage name is (s) [" LITERAL (OWRT_NAME_PACKAGE) "]", "q\tsuppress routine messages", "v\tenable verbose messages", (char const *)(0) }; char const * handler = OWRT_NAME_HANDLER; char const * package = OWRT_NAME_PACKAGE; signed vectorsize = OWRT_SIZE_VECTOR; signed buffersize = OWRT_SIZE_BUFFER; void (* function) () = invoke_handler; flag_t flags = (flag_t)(0); signed c; while (~ (c = getoptv (argc, argv, optv))) { switch (c) { case 'c': _setbits (flags, OWRT_ONELINE); break; case 'e': function = enumerate; break; case 'h': handler = optarg; break; case 'p': package = optarg; break; case 'q': _setbits (flags, OWRT_SILENCE); break; case 'v': _setbits (flags, OWRT_VERBOSE); break; default: break; } } argc -= optind; argv += optind; if (!argc) { define_handler (handler, package); } while ((argc) && (* argv)) { if (efreopen (* argv, "rb", stdin)) { function (vectorsize, buffersize, flags); } argc--; argv++; } exit (0); }