]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll
Initial revision
[helm.git] / helm / DEVEL / pxp / pxp / m2parsergen / lexer.mll
diff --git a/helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll b/helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll
new file mode 100644 (file)
index 0000000..a016897
--- /dev/null
@@ -0,0 +1,93 @@
+(* $Id$
+ * ----------------------------------------------------------------------
+ *
+ *)
+
+{
+  open Parser
+}
+
+rule scan_file = parse
+    "/*" [^ '*']* ('*'+ [^ '/' '*'] [^ '*']* )* '*'* "*/"
+      { Space }
+  | "%token"
+      { Token }
+  | "<" [' ' '\t' '\r' '\n']* ">"
+      { Type 
+      }
+  | [ 'a'-'z' ] [ 'a'-'z' 'A'-'Z' '0'-'9' '_' ]*
+      { let s = Lexing.lexeme lexbuf in
+       Lname s
+      }
+  | [ 'A'-'Z' ] [ 'a'-'z' 'A'-'Z' '0'-'9' '_' ]*
+      { let s = Lexing.lexeme lexbuf in
+       Uname s
+      }
+  | "%%"
+      { Separator }
+  | "("
+      { Lparen }
+  | ","
+      { Comma }
+  | ")"
+      { Rparen }
+  | "[" 
+      { Lbracket }
+  | "]" 
+      { Rbracket }
+  | ":"
+      { Colon }
+  | "{{" [^ '}']* ( '}' [^ '}']+ )* "}}"
+      { let s = Lexing.lexeme lexbuf in
+       Code (String.sub s 2 (String.length s - 4), 0, 0)
+      }
+  | "?"
+      { Error }
+  | "|"
+      { Alt }
+  | "+"
+      { Loop_plus }
+  | "*"
+      { Loop_star }
+  | [' ' '\t' '\r' '\n']+
+      { Space }
+  | "$"
+      { Dollar }
+  | eof
+      { Eof }
+
+and scan_header = parse
+    "%%"
+      { Separator }
+  | "%"
+      { Code("%", 0, 0) }
+  | [^ '%']*
+      { Code(Lexing.lexeme lexbuf, 0, 0) }
+  | eof
+      { Eof }
+
+and scan_rest = parse
+    _*
+      { Code(Lexing.lexeme lexbuf, 0, 0) }
+  | eof 
+      { Eof }
+
+(* ======================================================================
+ * 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/06 21:51:24  gerd
+ *     New symbol Dollar.
+ *
+ * Revision 1.1  2000/05/06 17:36:17  gerd
+ *     Initial revision.
+ *
+ * 
+ *)