src/Pure/Syntax/ast.ML
changeset 258 e540b7d4ecb1
parent 235 775dd81a58e5
child 513 97a879e8d01b
equal deleted inserted replaced
257:b36874cf3b0b 258:e540b7d4ecb1
     5 Abstract syntax trees, translation rules, matching and normalization of asts.
     5 Abstract syntax trees, translation rules, matching and normalization of asts.
     6 *)
     6 *)
     7 
     7 
     8 signature AST0 =
     8 signature AST0 =
     9 sig
     9 sig
    10   structure Pretty: PRETTY
       
    11   datatype ast =
    10   datatype ast =
    12     Constant of string |
    11     Constant of string |
    13     Variable of string |
    12     Variable of string |
    14     Appl of ast list
    13     Appl of ast list
       
    14   exception AST of string * ast list
       
    15 end;
       
    16 
       
    17 signature AST1 =
       
    18 sig
       
    19   include AST0
       
    20   structure Pretty: PRETTY
    15   val mk_appl: ast -> ast list -> ast
    21   val mk_appl: ast -> ast list -> ast
    16   exception AST of string * ast list
       
    17   val str_of_ast: ast -> string
    22   val str_of_ast: ast -> string
    18   val pretty_ast: ast -> Pretty.T
    23   val pretty_ast: ast -> Pretty.T
    19   val pretty_rule: (ast * ast) -> Pretty.T
    24   val pretty_rule: ast * ast -> Pretty.T
    20   val pprint_ast: ast -> pprint_args -> unit
    25   val pprint_ast: ast -> pprint_args -> unit
    21   val trace_norm_ast: bool ref
    26   val trace_norm_ast: bool ref
    22   val stat_norm_ast: bool ref
    27   val stat_norm_ast: bool ref
    23 end
    28 end;
    24 
    29 
    25 signature AST =
    30 signature AST =
    26 sig
    31 sig
    27   include AST0
    32   include AST1
    28   val raise_ast: string -> ast list -> 'a
    33   val raise_ast: string -> ast list -> 'a
    29   val head_of_rule: ast * ast -> string
    34   val head_of_rule: ast * ast -> string
    30   val rule_error: ast * ast -> string option
    35   val rule_error: ast * ast -> string option
    31   val fold_ast: string -> ast list -> ast
    36   val fold_ast: string -> ast list -> ast
    32   val fold_ast_p: string -> ast list * ast -> ast
    37   val fold_ast_p: string -> ast list * ast -> ast