(* $Id$ * ---------------------------------------------------------------------- * *) 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; } ;; (* ====================================================================== * History: * * $Log$ * Revision 1.1 2000/11/17 09:57:32 lpadovan * Initial revision * * Revision 1.3 2000/05/09 00:03:22 gerd * Added [ ml_name ] symbols, where ml_name is an arbitrary * OCaml identifier. * * Revision 1.2 2000/05/08 22:03:01 gerd * It is now possible to have a $ {{ }} sequence right BEFORE * the first token. This code is executed just after the first token * has been recognized. * * Revision 1.1 2000/05/06 17:36:17 gerd * Initial revision. * * *)