(* $Id: ast.ml 662 2004-05-25 20:57:28Z gerd $ * ---------------------------------------------------------------------- * *) type declaration = D_token of string (* D_token name *) | D_typed_token of string (* D_typed_token name *) ;; type symbol = U_symbol of (string * string option) (* U_symbol(token, label) *) | L_symbol of (string * string list * string option) (* L_symbol(token, args, label) *) | L_indirect of (string * string list * string option) ;; type modifier = Exact | Option | Repetition ;; type pattern = { pat_symbol : symbol; pat_modifier : modifier; } type branch = { branch_selector : symbol; branch_early_code : (string * int * int); branch_binding_code : (string * int * int); branch_pattern : pattern list; branch_result_code : (string * int * int); branch_error_code : (string * int * int) option; } ;; type rule = { rule_name : string; rule_arguments : string list; (* List of names *) rule_branches : branch list; } ;; type text = { text_decls : declaration list; text_rules : rule list; } ;;