Unified · Split
| @@ -39,7 +39,7 @@ typedef struct { · 38 unmodified lines | |||
| 39 | }CharPtrInt; | 39 | }CharPtrInt; |
| 40 | 40 | ||
| 41 | enum { | 41 | enum { |
| 42 | P_LET, P_SET, P_IF, P_LAMBDA, P_MAC, P_WHILE, P_QUOTE, P_AND, P_OR, P_DO, P_CONS, | 42 | P_LET, P_SET, P_IF, P_LAMBDA, P_MAC, P_WHILE, P_QUOTE, P_AND, P_OR, P_BEGIN, P_CONS, |
| 43 | P_CAR, P_CDR, P_SETCAR, P_SETCDR, P_LIST, P_NOT, P_EQ, P_PRINT, | 43 | P_CAR, P_CDR, P_SETCAR, P_SETCDR, P_LIST, P_NOT, P_EQ, P_PRINT, |
| 44 | P_ATOM, P_NUMBER, P_BOOLEAN, | 44 | P_ATOM, P_NUMBER, P_BOOLEAN, |
| 45 | P_EQN, P_LT, P_LTE, P_ADD, P_SUB, P_MUL, P_DIV, | 45 | P_EQN, P_LT, P_LTE, P_ADD, P_SUB, P_MUL, P_DIV, |
| @@ -48,7 +48,7 @@ enum { · 2 unmodified lines | |||
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| 50 | static const char *primnames[P_MAX] = { | 50 | static const char *primnames[P_MAX] = { |
| 51 | "let", "define", "if", "lambda", "mac", "while", "quote", "and", "or", "do", "cons", | 51 | "let", "define", "if", "lambda", "mac", "while", "quote", "and", "or", "begin", "cons", |
| 52 | "car", "cdr", "setcar", "setcdr", "list", "not", "eq?", "print", | 52 | "car", "cdr", "setcar", "setcdr", "list", "not", "eq?", "print", |
| 53 | "atom?", "number?", "boolean?", | 53 | "atom?", "number?", "boolean?", |
| 54 | "=", "<", "<=", "+", "-", "*", "/", | 54 | "=", "<", "<=", "+", "-", "*", "/", |
| @@ -687,7 +687,7 @@ evallist(aaContext *ctx, aaObject *lst, aaObject *env) · 632 unmodified lines | |||
| 687 | } | 687 | } |
| 688 | 688 | ||
| 689 | static aaObject * | 689 | static aaObject * |
| 690 | dolist(aaContext *ctx, aaObject *lst, aaObject *env) | 690 | runlist(aaContext *ctx, aaObject *lst, aaObject *env) |
| 691 | { | 691 | { |
| 692 | aaObject *res; | 692 | aaObject *res; |
| 693 | int save = aa_savegc(ctx); | 693 | int save = aa_savegc(ctx); |
| @@ -778,7 +778,7 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 84 unmodified lines | |||
| 778 | va = aa_nextarg(ctx, &arg, 0); | 778 | va = aa_nextarg(ctx, &arg, 0); |
| 779 | n = aa_savegc(ctx); | 779 | n = aa_savegc(ctx); |
| 780 | while(!ISNIL(eval(ctx, va, env, nil))){ | 780 | while(!ISNIL(eval(ctx, va, env, nil))){ |
| 781 | dolist(ctx, arg, env); | 781 | runlist(ctx, arg, env); |
| 782 | aa_restoregc(ctx, n); | 782 | aa_restoregc(ctx, n); |
| 783 | } | 783 | } |
| 784 | break; | 784 | break; |
| @@ -795,8 +795,8 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 10 unmodified lines | |||
| 795 | while (!ISNIL(arg) && ISNIL(res = evalarg())); | 795 | while (!ISNIL(arg) && ISNIL(res = evalarg())); |
| 796 | break; | 796 | break; |
| 797 | 797 | ||
| 798 | case P_DO: | 798 | case P_BEGIN: |
| 799 | res = dolist(ctx, arg, env); | 799 | res = runlist(ctx, arg, env); |
| 800 | break; | 800 | break; |
| 801 | 801 | ||
| 802 | case P_CONS: | 802 | case P_CONS: |
| @@ -876,14 +876,14 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 73 unmodified lines | |||
| 876 | arg = evallist(ctx, arg, env); | 876 | arg = evallist(ctx, arg, env); |
| 877 | va = CDR(fn); /* (env params ...) */ | 877 | va = CDR(fn); /* (env params ...) */ |
| 878 | vb = CDR(va); /* (params ...) */ | 878 | vb = CDR(va); /* (params ...) */ |
| 879 | res = dolist(ctx, CDR(vb), argstoenv(ctx, CAR(vb), arg, CAR(va))); | 879 | res = runlist(ctx, CDR(vb), argstoenv(ctx, CAR(vb), arg, CAR(va))); |
| 880 | break; | 880 | break; |
| 881 | 881 | ||
| 882 | case AA_TMACRO: | 882 | case AA_TMACRO: |
| 883 | va = CDR(fn); /* (env params ...) */ | 883 | va = CDR(fn); /* (env params ...) */ |
| 884 | vb = CDR(va); /* (params ...) */ | 884 | vb = CDR(va); /* (params ...) */ |
| 885 | /* replace caller object with code generated by macro and re-eval */ | 885 | /* replace caller object with code generated by macro and re-eval */ |
| 886 | *obj = *dolist(ctx, CDR(vb), argstoenv(ctx, CAR(vb), arg, CAR(va))); | 886 | *obj = *runlist(ctx, CDR(vb), argstoenv(ctx, CAR(vb), arg, CAR(va))); |
| 887 | aa_restoregc(ctx, gc); | 887 | aa_restoregc(ctx, gc); |
| 888 | ctx->calllist = CDR(&cl); | 888 | ctx->calllist = CDR(&cl); |
| 889 | return eval(ctx, obj, env, nil); | 889 | return eval(ctx, obj, env, nil); |