--- /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
+
+(* This lexer is used to expand and normalize attribute values: *)
+
+rule scan_content_string = parse
+ '&' name ';'
+ { let s = Lexing.lexeme lexbuf in
+ ERef (String.sub s 1 (String.length s - 2)) }
+ | "&#" ascii_digit+ ";"
+ { let s = Lexing.lexeme lexbuf in
+ CRef (int_of_string (String.sub s 2 (String.length s - 3))) }
+ | "&#x" ascii_hexdigit+ ";"
+ { let s = Lexing.lexeme lexbuf in
+ CRef (int_of_string ("0x" ^ String.sub s 3 (String.length s - 4))) }
+ | '&'
+ { raise(WF_error("The character '&' must be written as '&'")) }
+ | printable_character_except_amp_lt+
+ { CharData (Lexing.lexeme lexbuf) }
+ | '\009'
+ { CRef 32 }
+ | '\013' '\010'
+ { CRef(-1) (* A special case *)
+ }
+ | '\013'
+ { CRef 32 }
+ | '\010'
+ { CRef 32 }
+ | '<'
+ {
+ (* Depending on the situation, '<' may be legal or not: *)
+ CharData "<"
+ }
+ | eof
+ { Eof }
+ | _
+ { 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.
+ *
+ *
+ *)