void end_diagnostic(boolean blank_line) { tprint_nl(""); if(blank_line) print_ln(); selector= global_old_setting; }
void group_warning(void) { boolean w= false; int i= in_open; base_ptr= input_ptr; input_stack[base_ptr]= cur_input; while((grp_stack[i]==cur_boundary)&&(i> 0)){ if(tracing_nesting_par> 0){ while((input_stack[base_ptr].state_field==token_list)|| (input_stack[base_ptr].index_field> i)) decr(base_ptr); if(input_stack[base_ptr].name_field> 17) w= true; } grp_stack[i]= save_value(save_ptr); decr(i); } if(w){ tprint_nl("Warning: end of "); print_group(true); tprint(" of a different file"); print_ln(); if(tracing_nesting_par> 1) show_context(); if(history==spotless) history= warning_issued; } }
void if_warning(void) { boolean w= false; int i= in_open; base_ptr= input_ptr; input_stack[base_ptr]= cur_input; while(if_stack[i]==cond_ptr){ if(tracing_nesting_par> 0){ while((input_stack[base_ptr].state_field==token_list)|| (input_stack[base_ptr].index_field> i)) decr(base_ptr); if(input_stack[base_ptr].name_field> 17) w= true; } if_stack[i]= vlink(cond_ptr); decr(i); } if(w){ tprint_nl("Warning: end of "); print_cmd_chr(if_test_cmd,cur_if); print_if_line(if_line); tprint(" of a different file"); print_ln(); if(tracing_nesting_par> 1) show_context(); if(history==spotless) history= warning_issued; } }
void print_nlp(void) { if(new_string_line> 0){ print_char(new_string_line); }else if(((term_offset> 0)&&(odd(selector)))|| ((file_offset> 0)&&(selector>=log_only))){ print_ln(); } }
void show_box(halfword p) { depth_threshold= show_box_depth_par; breadth_max= show_box_breadth_par; if(breadth_max<=0) breadth_max= 5; show_node_list(p); print_ln(); }
// Runs the given stack until it hits a condition or completes successfully. static value_t run_stack_until_condition(value_t ambience, value_t stack) { value_t result = run_stack_pushing_signals(ambience, stack); if (in_condition_cause(ccSignal, result)) { runtime_t *runtime = get_ambience_runtime(ambience); frame_t frame = open_stack(stack); TRY_DEF(trace, capture_backtrace(runtime, &frame)); print_ln("%9v", trace); } return result; }
void print(int s) { if(s>=str_ptr){ normal_warning("print","bad string pointer"); return; }else if(s<STRING_OFFSET){ if(s<0){ normal_warning("print","bad string offset"); }else{ if((false)&&(selector> pseudo)){ print_char(s); return; } if(s==new_line_char_par){ if(selector<pseudo){ print_ln(); return; } } if(s<=0x7F){ print_char(s); }else if(s<=0x7FF){ print_char(0xC0+(s/0x40)); print_char(0x80+(s%0x40)); }else if(s<=0xFFFF){ print_char(0xE0+(s/0x1000)); print_char(0x80+((s%0x1000)/0x40)); print_char(0x80+((s%0x1000)%0x40)); }else if(s>=0x110000){ int c= s-0x110000; if(c>=256){ formatted_warning("print","bad raw byte to print (c=%d), skipped",c); }else{ print_char(c); } }else{ print_char(0xF0+(s/0x40000)); print_char(0x80+((s%0x40000)/0x1000)); print_char(0x80+(((s%0x40000)%0x1000)/0x40)); print_char(0x80+(((s%0x40000)%0x1000)%0x40)); } } return; } if(selector==new_string){ append_string(str_string(s),(unsigned)str_length(s)); return; } lprint(&str_lstring(s)); }
void print_banner(const char*v) { int callback_id= callback_defined(start_run_callback); if(callback_id==0){ fprintf(term_out,"This is "MyName", Version %s%s ",v,WEB2CVERSION); if(format_ident> 0) print(format_ident); print_ln(); if(show_luahashchars){ wterm(' '); fprintf(term_out,"Number of bits used by the hash function ("my_name"): %d",LUAI_HASHLIMIT); print_ln(); } if(shellenabledp){ wterm(' '); if(restrictedshell) fprintf(term_out,"restricted "); fprintf(term_out,"system commands enabled.\n"); } }else if(callback_id> 0){ run_callback(callback_id,"->"); } }
void file_warning(void) { halfword p= save_ptr; int l= cur_level; int c= cur_group; int i; save_ptr= cur_boundary; while(grp_stack[in_open]!=save_ptr){ decr(cur_level); tprint_nl("Warning: end of file when "); print_group(true); tprint(" is incomplete"); cur_group= save_level(save_ptr); save_ptr= save_value(save_ptr); } save_ptr= p; cur_level= (quarterword)l; cur_group= (group_code)c; p= cond_ptr; l= if_limit; c= cur_if; i= if_line; while(if_stack[in_open]!=cond_ptr){ tprint_nl("Warning: end of file when "); print_cmd_chr(if_test_cmd,cur_if); if(if_limit==fi_code) tprint_esc("else"); print_if_line(if_line); tprint(" is incomplete"); if_line= if_line_field(cond_ptr); cur_if= if_limit_subtype(cond_ptr); if_limit= if_limit_type(cond_ptr); cond_ptr= vlink(cond_ptr); } cond_ptr= p; if_limit= l; cur_if= c; if_line= i; print_ln(); if(tracing_nesting_par> 1) show_context(); if(history==spotless) history= warning_issued; }
void tex::show_cur_page() { ptr p, q; int t; if (page_head == page_tail) return; print_nl("### current page:"); if (output_active) print(" (held over for next output)"); show_box(link(page_head)); if (page_contents > EMPTY) { print_nl("total height "); print_totals(); print_nl(" goal height "); print_scaled(page_goal); p = link(page_ins_head); while (p != page_ins_head) { print_ln(); print_esc("insert"); t = subtype(p); print_int(t); print(" adds "); t = x_over_n(page_ins_height(p), 1000) * count(t); print_scaled(t); if (type(p) == SPLIT_UP) { q = page_head; t = 0; do { q = link(q); if (type(q) == INS_NODE && subtype(q) == subtype(p)) incr(t); } while (q != broken_ins(p)); print(", #"); print_int(t); print(" might split"); } p = link(p); } } }
void write_out(halfword p) { int old_setting; int j; char*s,*ss; int callback_id; int lua_retval; expand_macros_in_tokenlist(p); old_setting= selector; j= write_stream(p); if(file_can_be_written(j)){ selector= j; }else if((j==term_only)&&(selector==term_and_log)){ selector= log_only; tprint_nl(""); }else{ tprint_nl(""); } s= tokenlist_to_cstring(def_ref,false,NULL); if(selector<no_print){ callback_id= callback_defined(process_output_buffer_callback); if(callback_id> 0){ lua_retval= run_callback(callback_id,"S->S",s,&ss); if((lua_retval==true)&&(ss!=NULL)){ xfree(s); s= ss; } } } tprint(s); xfree(s); print_ln(); flush_list(def_ref); selector= old_setting; }
void tex::show_activities () { int a; int m; list *p; *nest_ptr = cur_list; print_nl(null_str); print_ln(); for (p = nest_ptr; p >= nest; decr(p)) { m = p->mode_field; a = p->aux_field; print_nl("### "); print_mode(m); print(" entered at line "); print_int(abs(p->ml_field)); if (m == HMODE) { if (p->lhm_field != 2 || p->rhm_field != 3) { print(" (hyphenmin "); print_int(p->lhm_field); print(","); print_int(p->rhm_field); print(")"); } } if (p->ml_field < 0) { print(" (\\output routine)"); } if (p == nest) { show_cur_page(); if (link(contrib_head) != null) print_nl("### recent contributions:"); } show_box(link(p->head_field)); switch (abs(m) / (MAX_COMMAND + 1)) { case 0: print_nl("prevdepth "); if (a <= IGNORE_DEPTH) { print("ignored"); } else { print_scaled(a); } if (p->pg_field != 0) { print(", prevgraf "); print_int(p->pg_field); print(" line"); if (p->pg_field != 1) print("s"); } break; case 1: print_nl("spacefactor "); print_int(a); if (m > 0 && p->clang_field > 0) { print(", current language "); print_int(p->clang_field); } break; case 2: if (a != null) { print_nl("this will be denominator of:"); show_box(a); } break; } } }
void show_activities(void) { /*tex Index into |nest|: */ int p; /*tex The mode: */ int m; /*tex For showing the current page: */ halfword q, r; /*tex Ditto: */ int t; tprint_nl(""); print_ln(); for (p = nest_ptr; p >= 0; p--) { m = nest[p].mode_field; tprint_nl("### "); print_mode(m); tprint(" entered at line "); print_int(abs(nest[p].ml_field)); if (nest[p].ml_field < 0) tprint(" (\\output routine)"); if (p == 0) { /*tex Show the status of the current page */ if (page_head != page_tail) { tprint_nl("### current page:"); if (output_active) tprint(" (held over for next output)"); show_box(vlink(page_head)); if (page_contents > empty) { tprint_nl("total height "); print_totals(); tprint_nl(" goal height "); print_scaled(page_goal); r = vlink(page_ins_head); while (r != page_ins_head) { print_ln(); tprint_esc("insert"); t = subtype(r); print_int(t); tprint(" adds "); if (count(t) == 1000) t = height(r); else t = x_over_n(height(r), 1000) * count(t); print_scaled(t); if (type(r) == split_up_node) { q = page_head; t = 0; do { q = vlink(q); if ((type(q) == ins_node) && (subtype(q) == subtype(r))) incr(t); } while (q != broken_ins(r)); tprint(", #"); print_int(t); tprint(" might split"); } r = vlink(r); } } } if (vlink(contrib_head) != null) tprint_nl("### recent contributions:"); } show_box(vlink(nest[p].head_field)); /*tex Show the auxiliary field, |a|. */ switch (abs(m) / (max_command_cmd + 1)) { case 0: tprint_nl("prevdepth "); if (nest[p].prev_depth_field <= ignore_depth) tprint("ignored"); else print_scaled(nest[p].prev_depth_field); if (nest[p].pg_field != 0) { tprint(", prevgraf "); print_int(nest[p].pg_field); if (nest[p].pg_field != 1) tprint(" lines"); else tprint(" line"); } break; case 1: tprint_nl("spacefactor "); print_int(nest[p].space_factor_field); break; case 2: if (nest[p].incompleat_noad_field != null) { tprint("this will be denominator of:"); show_box(nest[p].incompleat_noad_field); } break; } } }
int main P2C(int,argc,string*,argv) #line 1238 "../../../texk/web2c/tiedir/tie.w" {{/*12:*/ #line 408 "../../../texk/web2c/tiedir/tie.w" int i; /*:12*/ #line 1238 "../../../texk/web2c/tiedir/tie.w" /*10:*/ #line 296 "../../../texk/web2c/tiedir/tie.w" xchr[32]= ' '; xchr[33]= '!'; xchr[34]= '\"'; xchr[35]= '#'; xchr[36]= '$'; xchr[37]= '%'; xchr[38]= '&'; xchr[39]= '\''; xchr[40]= '('; xchr[41]= ')'; xchr[42]= '*'; xchr[43]= '+'; xchr[44]= ','; xchr[45]= '-'; xchr[46]= '.'; xchr[47]= '/'; xchr[48]= '0'; xchr[49]= '1'; xchr[50]= '2'; xchr[51]= '3'; xchr[52]= '4'; xchr[53]= '5'; xchr[54]= '6'; xchr[55]= '7'; xchr[56]= '8'; xchr[57]= '9'; xchr[58]= ':'; xchr[59]= ';'; xchr[60]= '<'; xchr[61]= '='; xchr[62]= '>'; xchr[63]= '?'; xchr[64]= '@'; xchr[65]= 'A'; xchr[66]= 'B'; xchr[67]= 'C'; xchr[68]= 'D'; xchr[69]= 'E'; xchr[70]= 'F'; xchr[71]= 'G'; xchr[72]= 'H'; xchr[73]= 'I'; xchr[74]= 'J'; xchr[75]= 'K'; xchr[76]= 'L'; xchr[77]= 'M'; xchr[78]= 'N'; xchr[79]= 'O'; xchr[80]= 'P'; xchr[81]= 'Q'; xchr[82]= 'R'; xchr[83]= 'S'; xchr[84]= 'T'; xchr[85]= 'U'; xchr[86]= 'V'; xchr[87]= 'W'; xchr[88]= 'X'; xchr[89]= 'Y'; xchr[90]= 'Z'; xchr[91]= '['; xchr[92]= '\\'; xchr[93]= ']'; xchr[94]= '^'; xchr[95]= '_'; xchr[96]= '`'; xchr[97]= 'a'; xchr[98]= 'b'; xchr[99]= 'c'; xchr[100]= 'd'; xchr[101]= 'e'; xchr[102]= 'f'; xchr[103]= 'g'; xchr[104]= 'h'; xchr[105]= 'i'; xchr[106]= 'j'; xchr[107]= 'k'; xchr[108]= 'l'; xchr[109]= 'm'; xchr[110]= 'n'; xchr[111]= 'o'; xchr[112]= 'p'; xchr[113]= 'q'; xchr[114]= 'r'; xchr[115]= 's'; xchr[116]= 't'; xchr[117]= 'u'; xchr[118]= 'v'; xchr[119]= 'w'; xchr[120]= 'x'; xchr[121]= 'y'; xchr[122]= 'z'; xchr[123]= '{'; xchr[124]= '|'; xchr[125]= '}'; xchr[126]= '~'; xchr[0]= ' ';xchr[0x7F]= ' '; /*:10*//*13:*/ #line 429 "../../../texk/web2c/tiedir/tie.w" for(i= 1;i<32;xchr[i++]= ' '); xchr[tab_mark]= '\t'; xchr[form_feed]= '\f'; xchr[nl_mark]= '\n'; /*:13*//*14:*/ #line 440 "../../../texk/web2c/tiedir/tie.w" for(i= first_text_char;i<=last_text_char;xord[i++]= 32)do_nothing; for(i= 1;i<=126;i++)xord[xchr[i]]= i; /*:14*/ #line 1239 "../../../texk/web2c/tiedir/tie.w" } #line 106 "../../../texk/web2c/tiedir/tie-w2c.ch" print(banner); print_ln(versionstring); print_ln(copyright); #line 1243 "../../../texk/web2c/tiedir/tie.w" actual_input= 0; out_mode= normal; /*56:*/ #line 1177 "../../../texk/web2c/tiedir/tie.w" {int act_arg; if(argc<5||argc> max_file_index+4-1)usage(); no_ch= -1; for(act_arg= 1;act_arg<argc;act_arg++){ if(argv[act_arg][0]=='-')/*57:*/ #line 1195 "../../../texk/web2c/tiedir/tie.w" if(prod_chf!=unknown)usage(); else switch(argv[act_arg][1]){ case'c': case'C':prod_chf= chf;break; case'm': case'M':prod_chf= master;break; default:usage(); } /*:57*/ #line 1182 "../../../texk/web2c/tiedir/tie.w" else/*58:*/ #line 1211 "../../../texk/web2c/tiedir/tie.w" {if(no_ch==(-1)){ out_name= argv[act_arg]; }else{register input_description*inp_desc; inp_desc= (input_description*) malloc(sizeof(input_description)); if(inp_desc==NULL) fatal_error("! No memory for descriptor"); inp_desc->mode= search; inp_desc->line= 0; inp_desc->type_of_file= chf; inp_desc->limit= 0; inp_desc->name_of_file= argv[act_arg]; input_organization[no_ch]= inp_desc; } incr(no_ch); } /*:58*/ #line 1183 "../../../texk/web2c/tiedir/tie.w" } if(no_ch<=0||prod_chf==unknown)usage(); } /*:56*/ #line 1245 "../../../texk/web2c/tiedir/tie.w" /*34:*/ #line 788 "../../../texk/web2c/tiedir/tie.w" { out_file= fopen(out_name,"w"); if(out_file==NULL){ fatal_error("! Could not open/create output file"); } } /*:34*/ #line 1246 "../../../texk/web2c/tiedir/tie.w" /*36:*/ #line 809 "../../../texk/web2c/tiedir/tie.w" {input_organization[0]->the_file= fopen(input_organization[0]->name_of_file,"r"); if(input_organization[0]->the_file==NULL) fatal_error("! Could not open master file"); print2("(%s)",input_organization[0]->name_of_file); term_new_line; input_organization[0]->type_of_file= master; get_line(0); } /*:36*/ #line 1247 "../../../texk/web2c/tiedir/tie.w" /*37:*/ #line 825 "../../../texk/web2c/tiedir/tie.w" {file_index i; i= 1; while(i<no_ch){ input_organization[i]->the_file= fopen(input_organization[i]->name_of_file,"r"); if(input_organization[i]->the_file==NULL) fatal_error("!Could not open change file"); print2("(%s)",input_organization[i]->name_of_file); term_new_line; init_change_file(i,true); incr(i); } } /*:37*/ #line 1248 "../../../texk/web2c/tiedir/tie.w" /*53:*/ #line 1128 "../../../texk/web2c/tiedir/tie.w" actual_input= 0; input_has_ended= false; while(input_has_ended==false||actual_input!=0) /*45:*/ #line 970 "../../../texk/web2c/tiedir/tie.w" {file_index test_file; /*46:*/ #line 985 "../../../texk/web2c/tiedir/tie.w" {register input_description*inp_desc; while(actual_input> 0&&e_of_ch_module(actual_input)){ inp_desc= input_organization[actual_input]; if(inp_desc->type_of_file==master){ fatal_error("! This can't happen: change file is master file"); } inp_desc->mode= search; init_change_file(actual_input,true); while((input_organization[actual_input]->mode!=reading &&actual_input> 0))decr(actual_input); } } /*:46*/ #line 972 "../../../texk/web2c/tiedir/tie.w" if(input_has_ended&&actual_input==0)break; /*47:*/ #line 1009 "../../../texk/web2c/tiedir/tie.w" test_input= none; test_file= actual_input; while(test_input==none&&test_file<no_ch-1){ incr(test_file); switch(input_organization[test_file]->mode){ case search:if(lines_dont_match(actual_input,test_file)==false){ input_organization[test_file]->mode= test; test_input= test_file; } break; case test:if(lines_dont_match(actual_input,test_file)==true){ input_organization[test_file]->mode= search; err_print("! Sections do not match")(actual_input); err_loc(test_file); init_change_file(test_file,false); }else test_input= test_file; break; case reading:do_nothing; break; case ignore:do_nothing; break; } } /*:47*/ #line 974 "../../../texk/web2c/tiedir/tie.w" /*48:*/ #line 1043 "../../../texk/web2c/tiedir/tie.w" if(prod_chf==chf){ loop{ /*49:*/ #line 1057 "../../../texk/web2c/tiedir/tie.w" if(out_mode==normal){ if(test_input!=none){ fputc(map_xchr(64),out_file);fputc(map_xchr(120),out_file); new_line(out_file); out_mode= pre; }else break; } /*:49*/ #line 1046 "../../../texk/web2c/tiedir/tie.w" /*50:*/ #line 1071 "../../../texk/web2c/tiedir/tie.w" if(out_mode==pre){ if(test_input==none){ fputc(map_xchr(64),out_file);fputc(map_xchr(121),out_file); new_line(out_file); out_mode= post; }else{ if(input_organization[actual_input]->type_of_file==master) put_line(actual_input); break; } } /*:50*/ #line 1047 "../../../texk/web2c/tiedir/tie.w" /*51:*/ #line 1092 "../../../texk/web2c/tiedir/tie.w" if(out_mode==post){ if(input_organization[actual_input]->type_of_file==chf){ if(test_input==none)put_line(actual_input); break; }else{ fputc(map_xchr(64),out_file);fputc(map_xchr(122),out_file); new_line(out_file); new_line(out_file); out_mode= normal; } } /*:51*/ #line 1048 "../../../texk/web2c/tiedir/tie.w" } }else if(test_input==none)put_line(actual_input);
void pdf_ship_out (pointer p) { integer page_loc; char j, k; if (tracing_output > 0) { print_nl(""); print_ln(); prints("Completed box being shipped out"); } if (term_offset > max_print_line - 9) print_ln(); else if ((term_offset > 0) || (file_offset > 0)) print_char(' '); print_char('['); j = 9; while ((count(j) == 0) && (j > 0)) decr(j); for (k = 0; k <= j; k++) { print_int(count(k)); if (k < j) print_char('.'); } update_terminal(); if (tracing_output > 0) { print_char(']'); begin_diagnostic(); show_box(p); end_diagnostic(true); } if ((height(p) > max_dimen) || (depth(p) > max_dimen) || (height(p) + depth(p) + v_offset > max_dimen) || (width(p) + h_offset > max_dimen)) { print_err("Huge page cannot be shipped out"); help2("The page just created is more than 18 feet tall or", "more than 18 feet wide, so I suspect something went wrong."); error(); if (tracing_output <= 0) { begin_diagnostic(); print_nl("The following box has been deleted:"); show_box(p); end_diagnostic(true); } goto done; } if (height(p) + depth(p) + v_offset > max_v) max_v = height(p) + depth(p) + v_offset; if (width(p) + h_offset > max_h) max_h = width(p) + h_offset; dvi_h = 0; dvi_v = 0; cur_h = h_offset; dvi_f = null_font; ensure_pdf_open(); if (total_pages == 0) { pdf_set_version(5); pdf_set_compression(9); pdf_init_fontmaps(); read_config_file("dvipdfmx.cfg"); pdf_doc_set_producer("Y&YTeX 2.3.0"); pdf_doc_set_creator("TeX"); pdf_files_init(); pdf_init_device(0.000015202, 2, 0); // TODO: pdfTeX's page width and height. // page_width = pdf_page_width != 0 ? <- : width(p) + 2 * (pdf_h_origin + h_offset); // page_height = pdf_page_height != 0 ? <- : height(p) + depth(p) + 2 * (pdf_v_origin + v_offset); pdf_open_document(pdf_file_name, 0, 595.0, 842.0, 0, 0, (1 << 4)); spc_exec_at_begin_document(); } page_loc = dvi_offset + dvi_ptr; pdf_doc_begin_page(1.0, 72.0, 770.0); spc_exec_at_begin_page(); last_bop = page_loc; cur_v = height(p) + v_offset; temp_ptr = p; if (type(p) == vlist_node) pdf_vlist_out(); else pdf_hlist_out(); spc_exec_at_end_page(); pdf_doc_end_page(); incr(total_pages); cur_s = -1; done: if (tracing_output <= 0) print_char(']'); dead_cycles = 0; update_terminal(); #ifdef STAT if (tracing_stats > 1) { print_nl("Memory usage before: "); print_int(var_used); print_char('&'); print_int(dyn_used); print_char(';'); } #endif flush_node_list(p); #ifdef STAT if (tracing_stats > 1) { prints(" after: "); print_int(var_used); print_char('&'); print_int(dyn_used); prints("; still utouched: "); print_int(hi_mem_min - lo_mem_max - 1); print_ln(); } #endif }
void print_char(int s) { if(s<0||s> 255){ formatted_warning("print","weird character %i",s); return; } if(s==new_line_char_par){ if(selector<pseudo){ print_ln(); return; } } switch(selector){ case no_print: break; case term_only: fix_term_offset(s); wterm_char(s); incr(term_offset); if(term_offset==max_print_line){ wterm_cr(); term_offset= 0; } break; case log_only: fix_log_offset(s); wlog(s); incr(file_offset); if(file_offset==max_print_line){ wlog_cr(); file_offset= 0; } break; case term_and_log: fix_term_offset(s); fix_log_offset(s); wterm_char(s); wlog(s); incr(term_offset); incr(file_offset); if(term_offset==max_print_line){ wterm_cr(); term_offset= 0; } if(file_offset==max_print_line){ wlog_cr(); file_offset= 0; } break; case pseudo: if(tally<trick_count) trick_buf[tally%error_line]= (packed_ASCII_code)s; break; case new_string: append_char(s); break; default: fprintf(write_file[selector],"%c",s); } incr(tally); }
void tex::show_node_list(ptr p) { int n; if (cur_length() > depth_threshold) { if (p > null) print(" []"); return; } n = 0; while (p > null) { print_ln(); print_str(); incr(n); if (n > breadth_max) { print("etc."); return; } if (is_char_node(p)) { print_font_and_char(p); } else { switch (type(p)) { case HLIST_NODE: case VLIST_NODE: case UNSET_NODE: show_box1(p); break; case RULE_NODE: show_rule(p); break; case INS_NODE: show_insertion(p); break; case WHATSIT_NODE: show_whatsit(p); break; case GLUE_NODE: show_glue(p); break; case KERN_NODE: show_kern(p); break; case MATH_NODE: show_math(p); break; case LIGATURE_NODE: show_ligature(p); break; case PENALTY_NODE: show_penalty(p); break; case DISC_NODE: show_discretionary(p); break; case MARK_NODE: show_mark(p); break; case ADJUST_NODE: show_adjust(p); break; case STYLE_NODE: print_style(subtype(p)); break; case CHOICE_NODE: show_choice_node(p); break; case INNER_NOAD: case ORD_NOAD: case OP_NOAD: case BIN_NOAD: case REL_NOAD: case OPEN_NOAD: case CLOSE_NOAD: case PUNCT_NOAD: case RADICAL_NOAD: case OVER_NOAD: case UNDER_NOAD: case VCENTER_NOAD: case ACCENT_NOAD: case LEFT_NOAD: case RIGHT_NOAD: show_normal_noad(p); break; case FRACTION_NOAD: show_fraction_noad(p); break; default: print("Unknown node type!"); break; } } p = link(p); } }