History

add set!

Sigrid Solveig Haflínudóttir committed 6 years ago

Commit 04545b31 parent 619ada82 files · +48 −37Browse files

Unified · Split

2 files
  1. README.md +1 −0
  2. aa.c +47 −37
README.md+1−0
@@ -43,6 +43,7 @@ newline · 42 unmodified lines
4343 not
4444 or
4545 quote
46+set!
4647 square
4748 while
4849 ```
aa.c+47−37
@@ -45,6 +45,7 @@ · 44 unmodified lines
4545 enum {
4646 P_LET,
4747 P_DEFINE,
48+ P_SET_YAS,
4849 P_IF,
4950 P_LAMBDA,
5051 P_MAC,
@@ -85,43 +86,44 @@ enum { · 34 unmodified lines
8586 };
8687
8788 static const char *primnames[P_MAX] = {
88− "let",
89− "define",
90− "if",
91− "lambda",
92− "mac",
93− "while",
94− "quote",
95− "eval",
96− "and",
97− "or",
98− "begin",
99− "cons",
100− "car",
101− "cdr",
102− "setcar",
103− "setcdr",
104− "list",
105− "not",
106− "display",
107− "eq?",
108− "equal?",
109− "atom?",
110− "number?",
111− "boolean?",
112− "port?",
113− "defined?",
114− "string?",
115− "nan?",
116− "=",
117− "<",
118− ">",
119− "<=",
120− ">=",
121− "+",
122− "-",
123− "*",
124− "/",
89+ [P_LET] = "let",
90+ [P_DEFINE] = "define",
91+ [P_SET_YAS] = "set!",
92+ [P_IF] = "if",
93+ [P_LAMBDA] = "lambda",
94+ [P_MAC] = "mac",
95+ [P_WHILE] = "while",
96+ [P_QUOTE] = "quote",
97+ [P_EVAL] = "eval",
98+ [P_AND] = "and",
99+ [P_OR] = "or",
100+ [P_BEGIN] = "begin",
101+ [P_CONS] = "cons",
102+ [P_CAR] = "car",
103+ [P_CDR] = "cdr",
104+ [P_SETCAR] = "setcar",
105+ [P_SETCDR] = "setcdr",
106+ [P_LIST] = "list",
107+ [P_NOT] = "not",
108+ [P_DISPLAY] = "display",
109+ [P_EQ_HUH] = "eq?",
110+ [P_EQUAL_HUH] = "equal?",
111+ [P_ATOM_HUH] = "atom?",
112+ [P_NUMBER_HUH] = "number?",
113+ [P_BOOLEAN_HUH] = "boolean?",
114+ [P_PORT_HUH] = "port?",
115+ [P_DEFINED_HUH] = "defined?",
116+ [P_STRING_HUH] = "string?",
117+ [P_NAN_HUH] = "nan?",
118+ [P_EQN] = "=",
119+ [P_LT] = "<",
120+ [P_GT] = ">",
121+ [P_LTE] = "<=",
122+ [P_GTE] = ">=",
123+ [P_ADD] = "+",
124+ [P_SUB] = "-",
125+ [P_MUL] = "*",
126+ [P_DIV] = "/",
125127 };
126128
127129 static const char *typenames[AA_TMAX] = {
@@ -785,6 +787,14 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 657 unmodified lines
785787 CDR(getbound(ctx, res, env)) = evalarg();
786788 break;
787789
790+ case P_SET_YAS:
791+ va = checktype(ctx, aa_nextarg(ctx, &arg, 0), AA_TSYMBOL);
792+ if(ISUNBOUND(CDR(CDR(va))))
793+ aa_error(ctx, "unbound variable: %ß", va);
794+ else
795+ aa_set(ctx, va, evalarg());
796+ break;
797+
788798 case P_IF:
789799 while(!ISNULL(arg)){
790800 va = evalarg();

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