X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fpxp%2Fpxp%2Flexers%2Fpxp_lex_content_string.src;fp=helm%2FDEVEL%2Fpxp%2Fpxp%2Flexers%2Fpxp_lex_content_string.src;h=1eb76a40dc3179ccc2e7a443d378c00b7c99b702;hb=c03d2c1fdab8d228cb88aaba5ca0f556318bebc5;hp=0000000000000000000000000000000000000000;hpb=758057e85325f94cd88583feb1fdf6b038e35055;p=helm.git diff --git a/helm/DEVEL/pxp/pxp/lexers/pxp_lex_content_string.src b/helm/DEVEL/pxp/pxp/lexers/pxp_lex_content_string.src new file mode 100644 index 000000000..1eb76a40d --- /dev/null +++ b/helm/DEVEL/pxp/pxp/lexers/pxp_lex_content_string.src @@ -0,0 +1,71 @@ +(* $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. + * + * + *)