add pic_debug function
This commit is contained in:
+11
@@ -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
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user