Просмотр исходного кода

Support printing the empty list

Lucas Stadler лет назад: 8
Родитель
Сommit
ccb51ff1fd
2 измененных файлов с 5 добавлено и 1 удалено
  1. 1 1
      scm/inc/compiler.scm
  2. 4 0
      scm/inc/driver.c

+ 1 - 1
scm/inc/compiler.scm

@ -25,4 +25,4 @@
25 25
  (emit "movl $~a, %eax" (immediate-rep x))
26 26
  (emit "ret"))
27 27
28
(compile-program 42)
28
(compile-program '())

+ 4 - 0
scm/inc/driver.c

@ -6,12 +6,16 @@
6 6
#define fixnum_tag   0 // 00
7 7
#define fixnum_shift 2
8 8
9
#define empty_list   47 // 00101111
10
9 11
int scheme_entry();
10 12
11 13
int main(int argc, char **argv) {
12 14
	int val = scheme_entry();
13 15
	if ((val & fixnum_mask) == fixnum_tag) {
14 16
		printf("%d\n", val >> fixnum_shift);
17
	} else if (val == empty_list) {
18
		printf("()\n");
15 19
	} else {
16 20
		printf("Error: unhandled value: %d\n", val);
17 21
		return 1;