add pic_debug function

This commit is contained in:
Yuichi Nishiwaki
2013-10-10 17:48:01 +09:00
parent 0c382c2bdb
commit b640dc08e8
4 changed files with 47 additions and 0 deletions
+11
View File
@@ -1,5 +1,16 @@
#include "picrin.h"
enum pic_tt
pic_type(pic_value v)
{
switch (v->type) {
case PIC_VTYPE_NIL:
return PIC_TT_NIL;
case PIC_VTYPE_HEAP:
return v->u->data->tt;
}
}
pic_value
pic_nil_value()
{
+26
View File
@@ -0,0 +1,26 @@
#include <stdio.h>
#include <stdlib.h>
#include "picrin.h"
void
pic_debug(pic_state *pic, pic_value obj)
{
switch (pic_type(obj)) {
case PIC_TT_NIL:
printf("()");
break;
case PIC_TT_PAIR:
printf("(");
pic_debug(pic, pic_car(pic, obj));
printf(" . ");
pic_debug(pic, pic_cdr(pic, obj));
printf(")");
break;
case PIC_TT_SYMBOL:
printf("%s", pic_symbol_ptr(obj)->name);
break;
default:
abort();
}
}