--- /dev/null
+(* $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.
+ *
+ *
+ *)