History

do → begin

Sigrid Haflínudóttir committed 6 years ago

Commit 92fc7e41 parent ab14a0d1 file · +8 −8Browse files

Unified · Split

aa.c+8−8
@@ -39,7 +39,7 @@ typedef struct { · 38 unmodified lines
39}CharPtrInt;39}CharPtrInt;
40 40
41enum {41enum {
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
50static const char *primnames[P_MAX] = {50static 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
689static aaObject *689static aaObject *
690dolist(aaContext *ctx, aaObject *lst, aaObject *env)690runlist(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);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t