src/HOL/Tools/string_syntax.ML
changeset 45490 20c8c0cca555
parent 42290 b1f544c84040
child 46483 10a9c31a22b4
equal deleted inserted replaced
45489:9b6f55f34b70 45490:20c8c0cca555
    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))]