]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/pxp/pxp/m2parsergen/ast.ml
Initial revision
[helm.git] / helm / DEVEL / pxp / pxp / m2parsergen / ast.ml
diff --git a/helm/DEVEL/pxp/pxp/m2parsergen/ast.ml b/helm/DEVEL/pxp/pxp/m2parsergen/ast.ml
new file mode 100644 (file)
index 0000000..219dd0c
--- /dev/null
@@ -0,0 +1,75 @@
+(* $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.
+ *
+ * 
+ *)