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