@@ -2225,30 +2225,30 @@ object *reverse_and_flatten (object *expr) {
2225
2225
#define ATNOTHINGS (object*)-1
2226
2226
2227
2227
object *process_quasiquoted (object *expr, int level, object *env) {
2228
- Serial.print (" **** Processing quasiquote of : " );
2229
- printobject (expr, pserial);
2230
- Serial.println ();
2231
- Serial.print (" **** at level " );
2232
- Serial.println (level);
2228
+ // Serial.print("**** Processing quasiquote of : ");
2229
+ // printobject(expr, pserial);
2230
+ // Serial.println();
2231
+ // Serial.print("**** at level ");
2232
+ // Serial.println(level);
2233
2233
if (!consp (expr)) return cons (expr, NULL );
2234
2234
2235
2235
if (isbuiltin (car (expr), QUASIQUOTE)) {
2236
- Serial.println (" nested quasiquote" );
2236
+ // Serial.println("nested quasiquote");
2237
2237
push (second (expr),GCStack);
2238
2238
object *processed = process_quasiquoted (second (expr), level + 1 , env);
2239
2239
pop (GCStack);
2240
2240
return cons (cons (symbol (QUASIQUOTE), processed), NULL );
2241
2241
} else if (isbuiltin (car (expr), UNQUOTE)) {
2242
- Serial.println (" **** Processing UNQUOTE" );
2243
- Serial.print (" **** At level " );
2244
- Serial.println (level);
2242
+ // Serial.println("**** Processing UNQUOTE");
2243
+ // Serial.print("**** At level ");
2244
+ // Serial.println(level);
2245
2245
if (level == 1 ) {
2246
2246
push (second (expr),GCStack);
2247
2247
object *processed = process_quasiquoted (second (expr), level, env);
2248
2248
object *result = eval (car (processed), env);
2249
- Serial.print (" **** Result: " );
2250
- printobject (result, pserial);
2251
- Serial.println ();
2249
+ // Serial.print("**** Result: ");
2250
+ // printobject(result, pserial);
2251
+ // Serial.println();
2252
2252
pop (GCStack);
2253
2253
return cons (result, NULL );
2254
2254
} else {
@@ -2258,19 +2258,19 @@ object *process_quasiquoted (object *expr, int level, object *env) {
2258
2258
return cons (cons (symbol (UNQUOTE), processed), NULL );
2259
2259
}
2260
2260
} else if (isbuiltin (car (expr), UNQUOTESPLICING)) {
2261
- Serial.println (" **** Processing UNQUOTESPLICING" );
2262
- Serial.print (" **** At level " );
2263
- Serial.println (level);
2261
+ // Serial.println("**** Processing UNQUOTESPLICING");
2262
+ // Serial.print("**** At level ");
2263
+ // Serial.println(level);
2264
2264
if (level == 1 ) {
2265
2265
push (second (expr),GCStack);
2266
2266
object *processed = process_quasiquoted (second (expr), level, env);
2267
- Serial.print (" **** Processed: " );
2268
- printobject (car (processed), pserial);
2269
- Serial.println ();
2267
+ // Serial.print("**** Processed: ");
2268
+ // printobject(car(processed), pserial);
2269
+ // Serial.println();
2270
2270
object *result = eval (car (processed), env);
2271
- Serial.print (" **** Result: " );
2272
- printobject (result, pserial);
2273
- Serial.println ();
2271
+ // Serial.print("**** Result: ");
2272
+ // printobject(result, pserial);
2273
+ // Serial.println();
2274
2274
pop (GCStack);
2275
2275
if (result == nil) return ATNOTHINGS; // sentinel to signal that @... should insert nothing (i.e. empty list)
2276
2276
else return result;
@@ -2281,9 +2281,9 @@ object *process_quasiquoted (object *expr, int level, object *env) {
2281
2281
return cons (cons (symbol (UNQUOTESPLICING), processed), NULL );
2282
2282
}
2283
2283
} else {
2284
- Serial.println (" Processing something else" );
2285
- Serial.print (" **** At level " );
2286
- Serial.println (level);
2284
+ // Serial.println("Processing something else");
2285
+ // Serial.print("**** At level ");
2286
+ // Serial.println(level);
2287
2287
object *parts = NULL ;
2288
2288
push (parts, GCStack);
2289
2289
for (object *cell = expr; cell != NULL ; cell = cdr (cell)) {
@@ -2294,14 +2294,14 @@ object *process_quasiquoted (object *expr, int level, object *env) {
2294
2294
push (processed, parts);
2295
2295
}
2296
2296
}
2297
- Serial.print (" **** parts: " );
2298
- printobject (parts, pserial);
2299
- Serial.println ();
2297
+ // Serial.print("**** parts: ");
2298
+ // printobject(parts, pserial);
2299
+ // Serial.println();
2300
2300
2301
2301
object *result = reverse_and_flatten (parts);
2302
- Serial.print (" **** Result: " );
2303
- printobject (result, pserial);
2304
- Serial.println ();
2302
+ // Serial.print("**** Result: ");
2303
+ // printobject(result, pserial);
2304
+ // Serial.println();
2305
2305
pop (GCStack);
2306
2306
return cons (result, NULL );
2307
2307
}
@@ -5048,6 +5048,7 @@ object *eval (object *form, object *env) {
5048
5048
object *definition = cdr (function);
5049
5049
object *params = car (definition);
5050
5050
object *body = car (cdr (definition));
5051
+ push (unevaled_args,GCStack);
5051
5052
// Serial.print("Macro: params: ");
5052
5053
// printobject(params, pserial);
5053
5054
// Serial.print(" - args: ");
@@ -5072,6 +5073,7 @@ object *eval (object *form, object *env) {
5072
5073
}
5073
5074
form = expand (body, newenv);
5074
5075
pop (GCStack);
5076
+ pop (GCStack);
5075
5077
goto EVAL;
5076
5078
}
5077
5079
error (NIL, PSTR (" illegal function" ), fname); return nil;
0 commit comments