Kaynağa Gözat

fixed broken `words?` in shell due to names now being homoiconic

main
Ludovic 'Archivist' Lagouardette 2 gün önce
ebeveyn
işleme
bdc61ca621
1 değiştirilmiş dosya ile 47 ekleme ve 2 silme
  1. +47
    -2
      sh.c

+ 47
- 2
sh.c Dosyayı Görüntüle

@ -13,11 +13,56 @@ int get_type_by_name(struct context* ctx, const char* name);
static void list_words(struct context* ctx) {
struct native_fn* nit;
struct fn* dit;
int i;
for(nit = ctx->native_words; nit != ctx->native_words + ctx->native_words_top; ++nit) {
fprintf(stdout, "%s\n", nit->name);
const struct ink_array* name = ink_get_value(ctx, nit->name);
for (i = 0; i < name->top; ++i) {
const struct elem a = name->elements[i];
if(a.value <= 0x7F) {
ctx->putchar(ctx, a.value);
} else if(a.value <= 0x7FF) {
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 192);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else if(a.value <= 0xFFFF) {
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 224);
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else if(a.value <= 0x10FFFF) {
ctx->putchar(ctx, ((a.value & 0x3C0000) >> 18) | 240);
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 128);
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else {
ctx->panic = -9472;
return;
}
}
ctx->putchar(ctx, '\n');
}
for(dit = ctx->words; dit != ctx->words + ctx->words_top; ++dit) {
fprintf(stdout, "%s\n", dit->name);
const struct ink_array* name = ink_get_value(ctx, dit->name);
for (i = 0; i < name->top; ++i) {
const struct elem a = name->elements[i];
if(a.value <= 0x7F) {
ctx->putchar(ctx, a.value);
} else if(a.value <= 0x7FF) {
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 192);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else if(a.value <= 0xFFFF) {
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 224);
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else if(a.value <= 0x10FFFF) {
ctx->putchar(ctx, ((a.value & 0x3C0000) >> 18) | 240);
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 128);
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128);
ctx->putchar(ctx, (a.value & 0x3F) | 128);
} else {
ctx->panic = -9472;
return;
}
}
ctx->putchar(ctx, '\n');
}
}

Yükleniyor…
İptal
Kaydet