Print.pco
)
{ print(Exp): { indent: 0; print_expression(Exp): void; print_list(Lst, Ini, Sep, Trm): { display(Ini); if(size(Lst) > 0, { print(Lst[1]); for(k: 2, k:= k+1, not(k > size(Lst)), { display(Sep); print_expression(Lst[k]) }) }, void); display(Trm) }; print_number(Exp): { val: Exp[NBR_VAL_idx]; display(val) }; print_fraction(Exp): { val: Exp[FRC_VAL_idx]; display(val) }; print_text(Exp): { val: Exp[TXT_VAL_idx]; display(val) }; print_table(Exp): { tab: Exp[TAB_TAB_idx]; print_list(tab, '[', ',', ']') }; print_function(Exp): { nam: Exp[FUN_NAM_idx]; display('') }; print_native(Exp): { nam: Exp[NAT_Nam_idx]; display(' ') }; print_void(Exp): display(' '); print_variable(Exp): { nam: Exp[VAR_NAM_idx]; display(nam) }; print_application(Exp): { nam: Exp[APL_NAM_idx]; arg: Exp[APL_ARG_idx]; display(nam); if(arg[TAG_idx] = TAB_tag, { tab: arg[TAB_TAB_idx]; print_list(tab, '(', ',', ')') }, { display('@'); print_expression(arg) })}; print_tabulation(Exp): { nam: Exp[TBL_NAM_idx]; idx: Exp[TBL_IDX_idx]; display(nam, '['); print_expression(idx); display(']') }; print_definition(Exp): { inv: Exp[DEF_INV_idx]; exp: Exp[DEF_EXP_idx]; print_expression(inv); display(': '); print_expression(exp) }; print_assignment(Exp): { inv: Exp[SET_INV_idx]; exp: Exp[SET_EXP_idx]; print_expression(inv); display(':= '); print_expression(exp) }; print_dictionary(Exp): display(' '); exp_case: case(NBR_tag => print_number, FRC_tag => print_fraction, TXT_tag => print_text, TAB_tag => print_table, FUN_tag => print_function, NAT_tag => print_native, VAR_tag => print_variable, APL_tag => print_application, TBL_tag => print_tabulation, DEF_tag => print_definition, SET_tag => print_assignment, DCT_tag => print_dictionary, VOI_tag => print_void); print_expression(Exp):= { cas: exp_case(Exp[TAG_idx]); cas(Exp) }; print(Exp):= { indent:= 0; print_expression(Exp) }; print(Exp) }; display('printer installed', eoln)}
This page was made (with lots of hard work!) by Wolfgang De Meuter