56 of SOME p => p |
56 of SOME p => p |
57 | NONE => |
57 | NONE => |
58 Code_Printer.literal_list literals (map (pr vars Code_Printer.NOBR) ts)) |
58 Code_Printer.literal_list literals (map (pr vars Code_Printer.NOBR) ts)) |
59 | NONE => |
59 | NONE => |
60 List_Code.default_list (Code_Printer.infix_cons literals) (pr vars) fxy t1 t2; |
60 List_Code.default_list (Code_Printer.infix_cons literals) (pr vars) fxy t1 t2; |
61 in Code_Target.add_const_syntax target |
61 in |
62 @{const_name Cons} (SOME (Code_Printer.complex_const_syntax (2, (cs_summa, pretty)))) |
62 Code_Target.set_printings (Code_Symbol.Constant (@{const_name Cons}, |
|
63 [(target, SOME (Code_Printer.complex_const_syntax (2, (cs_summa, pretty))))])) |
63 end; |
64 end; |
64 |
65 |
65 fun add_literal_char target = |
66 fun add_literal_char target = |
66 let |
67 let |
67 fun pretty literals nibbles' _ thm _ _ [(t1, _), (t2, _)] = |
68 fun pretty literals nibbles' _ thm _ _ [(t1, _), (t2, _)] = |
68 case decode_char nibbles' (t1, t2) |
69 case decode_char nibbles' (t1, t2) |
69 of SOME c => (Code_Printer.str o Code_Printer.literal_char literals) c |
70 of SOME c => (Code_Printer.str o Code_Printer.literal_char literals) c |
70 | NONE => Code_Printer.eqn_error thm "Illegal character expression"; |
71 | NONE => Code_Printer.eqn_error thm "Illegal character expression"; |
71 in Code_Target.add_const_syntax target |
72 in |
72 @{const_name Char} (SOME (Code_Printer.complex_const_syntax (2, (cs_nibbles, pretty)))) |
73 Code_Target.set_printings (Code_Symbol.Constant (@{const_name Char}, |
|
74 [(target, SOME (Code_Printer.complex_const_syntax (2, (cs_nibbles, pretty))))])) |
73 end; |
75 end; |
74 |
76 |
75 fun add_literal_string target = |
77 fun add_literal_string target = |
76 let |
78 let |
77 fun pretty literals (nil' :: cons' :: char' :: nibbles') _ thm _ _ [(t, _)] = |
79 fun pretty literals (nil' :: cons' :: char' :: nibbles') _ thm _ _ [(t, _)] = |
78 case List_Code.implode_list nil' cons' t |
80 case List_Code.implode_list nil' cons' t |
79 of SOME ts => (case implode_string literals char' nibbles' ts |
81 of SOME ts => (case implode_string literals char' nibbles' ts |
80 of SOME p => p |
82 of SOME p => p |
81 | NONE => Code_Printer.eqn_error thm "Illegal message expression") |
83 | NONE => Code_Printer.eqn_error thm "Illegal message expression") |
82 | NONE => Code_Printer.eqn_error thm "Illegal message expression"; |
84 | NONE => Code_Printer.eqn_error thm "Illegal message expression"; |
83 in Code_Target.add_const_syntax target |
85 in |
84 @{const_name STR} (SOME (Code_Printer.complex_const_syntax (1, (cs_summa, pretty)))) |
86 Code_Target.set_printings (Code_Symbol.Constant (@{const_name STR}, |
|
87 [(target, SOME (Code_Printer.complex_const_syntax (1, (cs_summa, pretty))))])) |
85 end; |
88 end; |
86 |
89 |
87 end; |
90 end; |