equal
deleted
inserted
replaced
50 |
50 |
51 fun char_ast_tr [Ast.Variable xstr] = |
51 fun char_ast_tr [Ast.Variable xstr] = |
52 (case Lexicon.explode_xstr xstr of |
52 (case Lexicon.explode_xstr xstr of |
53 [c] => mk_char c |
53 [c] => mk_char c |
54 | _ => error ("Single character expected: " ^ xstr)) |
54 | _ => error ("Single character expected: " ^ xstr)) |
|
55 | char_ast_tr [Ast.Appl [Ast.Constant @{syntax_const "_constrain"}, ast1, ast2]] = |
|
56 Ast.Appl [Ast.Constant @{syntax_const "_constrain"}, char_ast_tr [ast1], ast2] |
55 | char_ast_tr asts = raise Ast.AST ("char_ast_tr", asts); |
57 | char_ast_tr asts = raise Ast.AST ("char_ast_tr", asts); |
56 |
58 |
57 fun char_ast_tr' [c1, c2] = |
59 fun char_ast_tr' [c1, c2] = |
58 Ast.Appl [Ast.Constant @{syntax_const "_Char"}, syntax_string [dest_chr c1 c2]] |
60 Ast.Appl [Ast.Constant @{syntax_const "_Char"}, syntax_string [dest_chr c1 c2]] |
59 | char_ast_tr' _ = raise Match; |
61 | char_ast_tr' _ = raise Match; |
70 [] => |
72 [] => |
71 Ast.Appl |
73 Ast.Appl |
72 [Ast.Constant @{syntax_const "_constrain"}, |
74 [Ast.Constant @{syntax_const "_constrain"}, |
73 Ast.Constant @{const_syntax Nil}, Ast.Constant @{type_syntax string}] |
75 Ast.Constant @{const_syntax Nil}, Ast.Constant @{type_syntax string}] |
74 | cs => mk_string cs) |
76 | cs => mk_string cs) |
|
77 | string_ast_tr [Ast.Appl [Ast.Constant @{syntax_const "_constrain"}, ast1, ast2]] = |
|
78 Ast.Appl [Ast.Constant @{syntax_const "_constrain"}, string_ast_tr [ast1], ast2] |
75 | string_ast_tr asts = raise Ast.AST ("string_tr", asts); |
79 | string_ast_tr asts = raise Ast.AST ("string_tr", asts); |
76 |
80 |
77 fun list_ast_tr' [args] = |
81 fun list_ast_tr' [args] = |
78 Ast.Appl [Ast.Constant @{syntax_const "_String"}, |
82 Ast.Appl [Ast.Constant @{syntax_const "_String"}, |
79 syntax_string (map dest_char (Ast.unfold_ast @{syntax_const "_args"} args))] |
83 syntax_string (map dest_char (Ast.unfold_ast @{syntax_const "_args"} args))] |