--- /dev/null
+(* $Id$
+ * ----------------------------------------------------------------------
+ *
+ *)
+
+
+{
+ open Pxp_types
+ open Pxp_lexer_types
+
+#insert open_pxp_lex_aux_*.src
+#insert pxp_lex_aux.src
+
+}
+
+#insert pxp_lex_defs_*.def
+
+
+(* scan_document_type: after "<!DOCTYPE" until matching ">" *)
+
+rule scan_document_type = parse
+ name
+ { let s = Lexing.lexeme lexbuf in
+ Name s, Document_type }
+ | ws+
+ { tok_Ignore__Document_type }
+ | '"' character_except_quot* '"'
+ { let s = Lexing.lexeme lexbuf in
+ (Unparsed_string (String.sub s 1 (String.length s - 2))), Document_type }
+ | '"'
+ { raise (WF_error ("Cannot find the second quotation mark"))
+ }
+ | "'" character_except_apos* "'"
+ { let s = Lexing.lexeme lexbuf in
+ (Unparsed_string (String.sub s 1 (String.length s - 2))), Document_type }
+ | "'"
+ { raise (WF_error ("Cannot find the second quotation mark"))
+ }
+ | '['
+ { tok_Dtd_begin__Declaration }
+ | '>'
+ { tok_Doctype_rangle__Document }
+ | eof
+ { tok_Eof__Document_type }
+ | '&'
+ { raise (WF_error("References to general entities not allowed here")) }
+ | '%'
+ { raise (WF_error("References to parameter entities not allowed here")) }
+ | character
+ { raise (WF_error("Content not allowed here")) }
+ | _
+ { raise Netconversion.Malformed_code }
+
+
+(* ======================================================================
+ * History:
+ *
+ * $Log$
+ * Revision 1.1 2000/11/17 09:57:32 lpadovan
+ * Initial revision
+ *
+ * Revision 1.3 2000/08/14 22:18:34 gerd
+ * Bad_character_stream -> Netconversion.Malformed_code
+ *
+ * Revision 1.2 2000/05/29 23:53:12 gerd
+ * Updated because Markup_* modules have been renamed to Pxp_*.
+ *
+ * Revision 1.1 2000/05/20 20:33:25 gerd
+ * Initial revision.
+ *
+ *
+ *)