| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -10,58 +10,42 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			int get_type_by_name(struct context* ctx, const char* name); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static void print_string(struct context* ctx, const struct elem string) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int i; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const struct ink_array* name = ink_get_value(ctx, string); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			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) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        print_string(ctx, nit->name); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ctx->putchar(ctx, '\n'); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for(dit = ctx->words; dit != ctx->words + ctx->words_top; ++dit) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        print_string(ctx, dit->name); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ctx->putchar(ctx, '\n'); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -232,9 +216,7 @@ int main(int argc, char** argv) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    if(print_as_string) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        for (ary_it = ary->elements; ary_it != ary->elements + ary->top; ++ary_it) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            fputc(ary_it->value, stdout); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        print_string(ctx, rt->stack[rt->top - 1]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        fputc('\n', stdout); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    } else { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        fputc('[', stdout); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |