[xml_parse_string() is slow for a long XML string #96](https://github.com/clicon/clixon/issues/96)

This commit is contained in:
Olof hagsand 2019-11-14 20:57:20 +01:00
parent 6b9a9d46f9
commit 039e08f86a
7 changed files with 83 additions and 35 deletions

View file

@ -94,6 +94,7 @@ ncname {namestart}{namechar}*
%s STATEA
%s AMPERSAND
%s CDATA
%s CDATAEND
%s CMNT
%s STR
%s TEXTDECL
@ -145,9 +146,13 @@ ncname {namestart}{namechar}*
<AMPERSAND>"apos;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "'"; return CHARDATA;}
<AMPERSAND>"quot;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "\""; return CHARDATA;}
<CDATA>. { clixon_xml_parselval.string = yytext; return CHARDATA;}
<CDATA>\n { clixon_xml_parselval.string = yytext;_YA->ya_linenum++; return (CHARDATA);}
<CDATA>"]]>" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = yytext; return CHARDATA;}
<CDATA>\] { BEGIN(CDATAEND);clixon_xml_parselval.string = yytext;return (CHARDATA);}
<CDATA>[^]\n]+ { clixon_xml_parselval.string = yytext; return CHARDATA;}
<CDATAEND>\n { clixon_xml_parselval.string = yytext;_YA->ya_linenum++; return (CHARDATA);}
<CDATAEND>"]>" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = yytext; return CHARDATA;}
<CDATAEND>. { BEGIN(CDATA); clixon_xml_parselval.string = yytext;return (CHARDATA);}
<CMNT>"-->" { BEGIN(START); return ECOMMENT; }
<CMNT>.