mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
Big space and tab cleanup
Remove all space before tabs and space and tabs at end of lines.
This commit is contained in:
232
xmlregexp.c
232
xmlregexp.c
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* regexp.c: generic and extensible Regular Expression engine
|
||||
*
|
||||
* Basically designed with the purpose of compiling regexps for
|
||||
* Basically designed with the purpose of compiling regexps for
|
||||
* the variety of validation/shemas mechanisms now available in
|
||||
* XML related specifications these include:
|
||||
* - XML-1.0 DTD validation
|
||||
@ -68,15 +68,15 @@
|
||||
*
|
||||
* macro to flag unimplemented blocks
|
||||
*/
|
||||
#define TODO \
|
||||
#define TODO \
|
||||
xmlGenericError(xmlGenericErrorContext, \
|
||||
"Unimplemented block at %s:%d\n", \
|
||||
__FILE__, __LINE__);
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Datatypes and structures *
|
||||
* *
|
||||
* *
|
||||
* Datatypes and structures *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/*
|
||||
@ -365,7 +365,7 @@ void xmlAutomataSetFlags(xmlAutomataPtr am, int flags);
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Regexp memory error handler *
|
||||
* Regexp memory error handler *
|
||||
* *
|
||||
************************************************************************/
|
||||
/**
|
||||
@ -412,9 +412,9 @@ xmlRegexpErrCompile(xmlRegParserCtxtPtr ctxt, const char *extra)
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Allocation/Deallocation *
|
||||
* *
|
||||
* *
|
||||
* Allocation/Deallocation *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
static int xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt);
|
||||
@ -935,9 +935,9 @@ xmlRegFreeParserCtxt(xmlRegParserCtxtPtr ctxt) {
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Display of Data structures *
|
||||
* *
|
||||
* *
|
||||
* Display of Data structures *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
static void
|
||||
@ -1144,7 +1144,7 @@ xmlRegPrintTrans(FILE *output, xmlRegTransPtr trans) {
|
||||
fprintf(output, "char %c ", trans->atom->codepoint);
|
||||
fprintf(output, "atom %d, to %d\n", trans->atom->no, trans->to);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
xmlRegPrintState(FILE *output, xmlRegStatePtr state) {
|
||||
int i;
|
||||
@ -1158,7 +1158,7 @@ xmlRegPrintState(FILE *output, xmlRegStatePtr state) {
|
||||
fprintf(output, "START ");
|
||||
if (state->type == XML_REGEXP_FINAL_STATE)
|
||||
fprintf(output, "FINAL ");
|
||||
|
||||
|
||||
fprintf(output, "%d, %d transitions:\n", state->no, state->nbTrans);
|
||||
for (i = 0;i < state->nbTrans; i++) {
|
||||
xmlRegPrintTrans(output, &(state->trans[i]));
|
||||
@ -1208,12 +1208,12 @@ xmlRegPrintCtxt(FILE *output, xmlRegParserCtxtPtr ctxt) {
|
||||
#endif
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Finite Automata structures manipulations *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
static void
|
||||
static void
|
||||
xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom,
|
||||
int neg, xmlRegAtomType type, int start, int end,
|
||||
xmlChar *blockName) {
|
||||
@ -1253,7 +1253,7 @@ xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom,
|
||||
return;
|
||||
range->blockName = blockName;
|
||||
atom->ranges[atom->nbRanges++] = range;
|
||||
|
||||
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1284,7 +1284,7 @@ xmlRegGetCounter(xmlRegParserCtxtPtr ctxt) {
|
||||
return(ctxt->nbCounters++);
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) {
|
||||
if (atom == NULL) {
|
||||
ERROR("atom push: atom is NULL");
|
||||
@ -1316,7 +1316,7 @@ xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target,
|
||||
int from) {
|
||||
if (target->maxTransTo == 0) {
|
||||
@ -1344,7 +1344,7 @@ xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target,
|
||||
target->nbTransTo++;
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
|
||||
xmlRegAtomPtr atom, xmlRegStatePtr target,
|
||||
int counter, int count) {
|
||||
@ -1410,7 +1410,7 @@ xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
|
||||
printf("counted %d\n", counter);
|
||||
else if (atom == NULL)
|
||||
printf("epsilon transition\n");
|
||||
else if (atom != NULL)
|
||||
else if (atom != NULL)
|
||||
xmlRegPrintAtom(stdout, atom);
|
||||
#endif
|
||||
|
||||
@ -1564,7 +1564,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
*/
|
||||
xmlFAGenerateEpsilonTransition(ctxt, atom->stop, to);
|
||||
#ifdef DV
|
||||
} else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) &&
|
||||
} else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) &&
|
||||
(atom->quant != XML_REGEXP_QUANT_ONCE)) {
|
||||
to = xmlRegNewState(ctxt);
|
||||
xmlRegStatePush(ctxt, to);
|
||||
@ -1578,7 +1578,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
/*
|
||||
* transition done to the state after end of atom.
|
||||
* 1. set transition from atom start to new state
|
||||
* 2. set transition from atom end to this state.
|
||||
* 2. set transition from atom end to this state.
|
||||
*/
|
||||
if (to == NULL) {
|
||||
xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0);
|
||||
@ -1622,7 +1622,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
/*
|
||||
* duplicate a transition based on atom to count next
|
||||
* occurences after 1. We cannot loop to atom->start
|
||||
* directly because we need an epsilon transition to
|
||||
* directly because we need an epsilon transition to
|
||||
* newstate.
|
||||
*/
|
||||
/* ???? For some reason it seems we never reach that
|
||||
@ -1681,7 +1681,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
break;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
if ((atom->min == 0) && (atom->max == 0) &&
|
||||
(atom->quant == XML_REGEXP_QUANT_RANGE)) {
|
||||
/*
|
||||
@ -1707,9 +1707,9 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
else {
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
end = to;
|
||||
if ((atom->quant == XML_REGEXP_QUANT_MULT) ||
|
||||
if ((atom->quant == XML_REGEXP_QUANT_MULT) ||
|
||||
(atom->quant == XML_REGEXP_QUANT_PLUS)) {
|
||||
/*
|
||||
* Do not pollute the target state by adding transitions from
|
||||
@ -1717,7 +1717,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
* So isolate with an epsilon transition.
|
||||
*/
|
||||
xmlRegStatePtr tmp;
|
||||
|
||||
|
||||
tmp = xmlRegNewState(ctxt);
|
||||
if (tmp != NULL)
|
||||
xmlRegStatePush(ctxt, tmp);
|
||||
@ -1746,7 +1746,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
atom->quant = XML_REGEXP_QUANT_ONCE;
|
||||
xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1);
|
||||
break;
|
||||
case XML_REGEXP_QUANT_RANGE:
|
||||
case XML_REGEXP_QUANT_RANGE:
|
||||
#if DV_test
|
||||
if (atom->min == 0) {
|
||||
xmlFAGenerateEpsilonTransition(ctxt, from, to);
|
||||
@ -1763,7 +1763,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
||||
* xmlFAReduceEpsilonTransitions:
|
||||
* @ctxt: a regexp parser context
|
||||
* @fromnr: the from state
|
||||
* @tonr: the to state
|
||||
* @tonr: the to state
|
||||
* @counter: should that transition be associated to a counted
|
||||
*
|
||||
*/
|
||||
@ -1807,7 +1807,7 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
|
||||
int newto = to->trans[transnr].to;
|
||||
|
||||
xmlRegStateAddTrans(ctxt, from, NULL,
|
||||
ctxt->states[newto],
|
||||
ctxt->states[newto],
|
||||
-1, to->trans[transnr].count);
|
||||
} else {
|
||||
#ifdef DEBUG_REGEXP_GRAPH
|
||||
@ -1829,11 +1829,11 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
|
||||
int newto = to->trans[transnr].to;
|
||||
|
||||
if (to->trans[transnr].counter >= 0) {
|
||||
xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
|
||||
ctxt->states[newto],
|
||||
xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
|
||||
ctxt->states[newto],
|
||||
to->trans[transnr].counter, -1);
|
||||
} else {
|
||||
xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
|
||||
xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
|
||||
ctxt->states[newto], counter, -1);
|
||||
}
|
||||
}
|
||||
@ -1845,7 +1845,7 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
|
||||
* xmlFAEliminateSimpleEpsilonTransitions:
|
||||
* @ctxt: a regexp parser context
|
||||
*
|
||||
* Eliminating general epsilon transitions can get costly in the general
|
||||
* Eliminating general epsilon transitions can get costly in the general
|
||||
* algorithm due to the large amount of generated new transitions and
|
||||
* associated comparisons. However for simple epsilon transition used just
|
||||
* to separate building blocks when generating the automata this can be
|
||||
@ -1881,12 +1881,12 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
|
||||
#ifdef DEBUG_REGEXP_GRAPH
|
||||
printf("Found simple epsilon trans from start %d to %d\n",
|
||||
statenr, newto);
|
||||
#endif
|
||||
#endif
|
||||
} else {
|
||||
#ifdef DEBUG_REGEXP_GRAPH
|
||||
printf("Found simple epsilon trans from %d to %d\n",
|
||||
statenr, newto);
|
||||
#endif
|
||||
#endif
|
||||
for (i = 0;i < state->nbTransTo;i++) {
|
||||
tmp = ctxt->states[state->transTo[i]];
|
||||
for (j = 0;j < tmp->nbTrans;j++) {
|
||||
@ -1894,10 +1894,10 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
|
||||
#ifdef DEBUG_REGEXP_GRAPH
|
||||
printf("Changed transition %d on %d to go to %d\n",
|
||||
j, tmp->no, newto);
|
||||
#endif
|
||||
#endif
|
||||
tmp->trans[j].to = -1;
|
||||
xmlRegStateAddTrans(ctxt, tmp, tmp->trans[j].atom,
|
||||
ctxt->states[newto],
|
||||
ctxt->states[newto],
|
||||
tmp->trans[j].counter,
|
||||
tmp->trans[j].count);
|
||||
}
|
||||
@ -1911,7 +1911,7 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
|
||||
state->type = XML_REGEXP_UNREACH_STATE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2113,7 +2113,7 @@ xmlFACompareRanges(xmlRegRangePtr range1, xmlRegRangePtr range2) {
|
||||
/*
|
||||
* just check all codepoints in the range for acceptance,
|
||||
* this is usually way cheaper since done only once at
|
||||
* compilation than testing over and over at runtime or
|
||||
* compilation than testing over and over at runtime or
|
||||
* pushing too many states when evaluating.
|
||||
*/
|
||||
if (((range1->neg == 0) && (range2->neg != 0)) ||
|
||||
@ -2781,9 +2781,9 @@ xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt) {
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Routines to check input against transition atoms *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
static int
|
||||
@ -2812,7 +2812,7 @@ xmlRegCheckCharacterRange(xmlRegAtomType type, int codepoint, int neg,
|
||||
case XML_REGEXP_NOTINITNAME:
|
||||
neg = !neg;
|
||||
case XML_REGEXP_INITNAME:
|
||||
ret = (IS_LETTER(codepoint) ||
|
||||
ret = (IS_LETTER(codepoint) ||
|
||||
(codepoint == '_') || (codepoint == ':'));
|
||||
break;
|
||||
case XML_REGEXP_NOTNAMECHAR:
|
||||
@ -3060,9 +3060,9 @@ xmlRegCheckCharacter(xmlRegAtomPtr atom, int codepoint) {
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Saving and restoring state of an execution context *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
#ifdef DEBUG_REGEXP_EXEC
|
||||
@ -3173,9 +3173,9 @@ xmlFARegExecRollBack(xmlRegExecCtxtPtr exec) {
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Verifier, running an input against a compiled regexp *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
static int
|
||||
@ -3476,9 +3476,9 @@ error:
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Progressive interface to the verifier one atom at a time *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
#ifdef DEBUG_ERR
|
||||
static void testerr(xmlRegExecCtxtPtr exec);
|
||||
@ -3595,7 +3595,7 @@ xmlFARegExecSaveInputString(xmlRegExecCtxtPtr exec, const xmlChar *value,
|
||||
#endif
|
||||
if (exec->inputStackMax == 0) {
|
||||
exec->inputStackMax = 4;
|
||||
exec->inputStack = (xmlRegInputTokenPtr)
|
||||
exec->inputStack = (xmlRegInputTokenPtr)
|
||||
xmlMalloc(exec->inputStackMax * sizeof(xmlRegInputToken));
|
||||
if (exec->inputStack == NULL) {
|
||||
xmlRegexpErrMemory(NULL, "pushing input string");
|
||||
@ -3624,11 +3624,11 @@ xmlFARegExecSaveInputString(xmlRegExecCtxtPtr exec, const xmlChar *value,
|
||||
|
||||
/**
|
||||
* xmlRegStrEqualWildcard:
|
||||
* @expStr: the string to be evaluated
|
||||
* @expStr: the string to be evaluated
|
||||
* @valStr: the validation string
|
||||
*
|
||||
* Checks if both strings are equal or have the same content. "*"
|
||||
* can be used as a wildcard in @valStr; "|" is used as a seperator of
|
||||
* can be used as a wildcard in @valStr; "|" is used as a seperator of
|
||||
* substrings in both @expStr and @valStr.
|
||||
*
|
||||
* Returns 1 if the comparison is satisfied and the number of substrings
|
||||
@ -3694,7 +3694,7 @@ xmlRegCompactPushString(xmlRegExecCtxtPtr exec,
|
||||
|
||||
if ((comp == NULL) || (comp->compact == NULL) || (comp->stringMap == NULL))
|
||||
return(-1);
|
||||
|
||||
|
||||
if (value == NULL) {
|
||||
/*
|
||||
* are we at a final state ?
|
||||
@ -3715,9 +3715,9 @@ xmlRegCompactPushString(xmlRegExecCtxtPtr exec,
|
||||
for (i = 0;i < comp->nbstrings;i++) {
|
||||
target = comp->compact[state * (comp->nbstrings + 1) + i + 1];
|
||||
if ((target > 0) && (target <= comp->nbstates)) {
|
||||
target--; /* to avoid 0 */
|
||||
target--; /* to avoid 0 */
|
||||
if (xmlRegStrEqualWildcard(comp->stringMap[i], value)) {
|
||||
exec->index = target;
|
||||
exec->index = target;
|
||||
if ((exec->callback != NULL) && (comp->transdata != NULL)) {
|
||||
exec->callback(exec->data, value,
|
||||
comp->transdata[state * comp->nbstrings + i], data);
|
||||
@ -3851,7 +3851,7 @@ xmlRegExecPushStringInternal(xmlRegExecCtxtPtr exec, const xmlChar *value,
|
||||
continue;
|
||||
counter = &exec->comp->counters[t->counter];
|
||||
count = exec->counts[t->counter];
|
||||
if ((count < counter->max) &&
|
||||
if ((count < counter->max) &&
|
||||
(t->atom != NULL) &&
|
||||
(xmlStrEqual(value, t->atom->valuep))) {
|
||||
ret = 0;
|
||||
@ -4209,7 +4209,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
|
||||
int maxval;
|
||||
int nb = 0;
|
||||
|
||||
if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) ||
|
||||
if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) ||
|
||||
(values == NULL) || (*nbval <= 0))
|
||||
return(-1);
|
||||
|
||||
@ -4315,7 +4315,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
|
||||
values[nb++] = (xmlChar *) atom->valuep;
|
||||
(*nbval)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (transno = 0;
|
||||
(transno < state->nbTrans) && (nb < maxval);
|
||||
@ -4342,7 +4342,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
|
||||
values[nb++] = (xmlChar *) atom->valuep;
|
||||
(*nbneg)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
@ -4573,10 +4573,10 @@ progress:
|
||||
}
|
||||
#endif
|
||||
/************************************************************************
|
||||
* *
|
||||
* *
|
||||
* Parser for the Schemas Datatype Regular Expressions *
|
||||
* http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#regexs *
|
||||
* *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
@ -4605,7 +4605,7 @@ xmlFAIsChar(xmlRegParserCtxtPtr ctxt) {
|
||||
*
|
||||
* [27] charProp ::= IsCategory | IsBlock
|
||||
* [28] IsCategory ::= Letters | Marks | Numbers | Punctuation |
|
||||
* Separators | Symbols | Others
|
||||
* Separators | Symbols | Others
|
||||
* [29] Letters ::= 'L' [ultmo]?
|
||||
* [30] Marks ::= 'M' [nce]?
|
||||
* [31] Numbers ::= 'N' [dlo]?
|
||||
@ -4620,7 +4620,7 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
|
||||
int cur;
|
||||
xmlRegAtomType type = (xmlRegAtomType) 0;
|
||||
xmlChar *blockName = NULL;
|
||||
|
||||
|
||||
cur = CUR;
|
||||
if (cur == 'L') {
|
||||
NEXT;
|
||||
@ -4792,15 +4792,15 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
|
||||
NEXT;
|
||||
start = ctxt->cur;
|
||||
cur = CUR;
|
||||
if (((cur >= 'a') && (cur <= 'z')) ||
|
||||
((cur >= 'A') && (cur <= 'Z')) ||
|
||||
((cur >= '0') && (cur <= '9')) ||
|
||||
if (((cur >= 'a') && (cur <= 'z')) ||
|
||||
((cur >= 'A') && (cur <= 'Z')) ||
|
||||
((cur >= '0') && (cur <= '9')) ||
|
||||
(cur == 0x2D)) {
|
||||
NEXT;
|
||||
cur = CUR;
|
||||
while (((cur >= 'a') && (cur <= 'z')) ||
|
||||
((cur >= 'A') && (cur <= 'Z')) ||
|
||||
((cur >= '0') && (cur <= '9')) ||
|
||||
while (((cur >= 'a') && (cur <= 'z')) ||
|
||||
((cur >= 'A') && (cur <= 'Z')) ||
|
||||
((cur >= '0') && (cur <= '9')) ||
|
||||
(cur == 0x2D)) {
|
||||
NEXT;
|
||||
cur = CUR;
|
||||
@ -4826,7 +4826,7 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
|
||||
* xmlFAParseCharClassEsc:
|
||||
* @ctxt: a regexp parser context
|
||||
*
|
||||
* [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
|
||||
* [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
|
||||
* [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E]
|
||||
* [25] catEsc ::= '\p{' charProp '}'
|
||||
* [26] complEsc ::= '\P{' charProp '}'
|
||||
@ -4923,34 +4923,34 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) {
|
||||
xmlRegAtomType type = XML_REGEXP_ANYSPACE;
|
||||
|
||||
switch (cur) {
|
||||
case 's':
|
||||
case 's':
|
||||
type = XML_REGEXP_ANYSPACE;
|
||||
break;
|
||||
case 'S':
|
||||
case 'S':
|
||||
type = XML_REGEXP_NOTSPACE;
|
||||
break;
|
||||
case 'i':
|
||||
case 'i':
|
||||
type = XML_REGEXP_INITNAME;
|
||||
break;
|
||||
case 'I':
|
||||
case 'I':
|
||||
type = XML_REGEXP_NOTINITNAME;
|
||||
break;
|
||||
case 'c':
|
||||
case 'c':
|
||||
type = XML_REGEXP_NAMECHAR;
|
||||
break;
|
||||
case 'C':
|
||||
case 'C':
|
||||
type = XML_REGEXP_NOTNAMECHAR;
|
||||
break;
|
||||
case 'd':
|
||||
case 'd':
|
||||
type = XML_REGEXP_DECIMAL;
|
||||
break;
|
||||
case 'D':
|
||||
case 'D':
|
||||
type = XML_REGEXP_NOTDECIMAL;
|
||||
break;
|
||||
case 'w':
|
||||
case 'w':
|
||||
type = XML_REGEXP_REALCHAR;
|
||||
break;
|
||||
case 'W':
|
||||
case 'W':
|
||||
type = XML_REGEXP_NOTREALCHAR;
|
||||
break;
|
||||
}
|
||||
@ -4970,7 +4970,7 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) {
|
||||
* xmlFAParseCharRange:
|
||||
* @ctxt: a regexp parser context
|
||||
*
|
||||
* [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash
|
||||
* [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash
|
||||
* [18] seRange ::= charOrEsc '-' charOrEsc
|
||||
* [20] charOrEsc ::= XmlChar | SingleCharEsc
|
||||
* [21] XmlChar ::= [^\#x2D#x5B#x5D]
|
||||
@ -5085,7 +5085,7 @@ xmlFAParsePosCharGroup(xmlRegParserCtxtPtr ctxt) {
|
||||
*
|
||||
* [13] charGroup ::= posCharGroup | negCharGroup | charClassSub
|
||||
* [15] negCharGroup ::= '^' posCharGroup
|
||||
* [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
|
||||
* [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
|
||||
* [12] charClassExpr ::= '[' charGroup ']'
|
||||
*/
|
||||
static void
|
||||
@ -5333,7 +5333,7 @@ xmlFAParseBranch(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr to) {
|
||||
previous = ctxt->state;
|
||||
ret = xmlFAParsePiece(ctxt);
|
||||
if (ret != 0) {
|
||||
if (xmlFAGenerateTransitions(ctxt, previous,
|
||||
if (xmlFAGenerateTransitions(ctxt, previous,
|
||||
(CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0)
|
||||
return(-1);
|
||||
previous = ctxt->state;
|
||||
@ -5342,7 +5342,7 @@ xmlFAParseBranch(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr to) {
|
||||
while ((ret != 0) && (ctxt->error == 0)) {
|
||||
ret = xmlFAParsePiece(ctxt);
|
||||
if (ret != 0) {
|
||||
if (xmlFAGenerateTransitions(ctxt, previous,
|
||||
if (xmlFAGenerateTransitions(ctxt, previous,
|
||||
(CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0)
|
||||
return(-1);
|
||||
previous = ctxt->state;
|
||||
@ -5395,9 +5395,9 @@ xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top) {
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* The basic API *
|
||||
* *
|
||||
* *
|
||||
* The basic API *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
@ -5584,9 +5584,9 @@ xmlRegFreeRegexp(xmlRegexpPtr regexp) {
|
||||
|
||||
#ifdef LIBXML_AUTOMATA_ENABLED
|
||||
/************************************************************************
|
||||
* *
|
||||
* The Automata interface *
|
||||
* *
|
||||
* *
|
||||
* The Automata interface *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
@ -5857,7 +5857,7 @@ xmlAutomataNewNegTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
*
|
||||
* If @to is NULL, this creates first a new target state in the automata
|
||||
* and then adds a transition from the @from state to the target state
|
||||
* activated by a succession of input of value @token and @token2 and
|
||||
* activated by a succession of input of value @token and @token2 and
|
||||
* whose number is between @min and @max
|
||||
*
|
||||
* Returns the target state or NULL in case of error
|
||||
@ -6011,8 +6011,8 @@ xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
*
|
||||
* If @to is NULL, this creates first a new target state in the automata
|
||||
* and then adds a transition from the @from state to the target state
|
||||
* activated by a succession of input of value @token and @token2 and whose
|
||||
* number is between @min and @max, moreover that transition can only be
|
||||
* activated by a succession of input of value @token and @token2 and whose
|
||||
* number is between @min and @max, moreover that transition can only be
|
||||
* crossed once.
|
||||
*
|
||||
* Returns the target state or NULL in case of error
|
||||
@ -6054,7 +6054,7 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
str[lenn + lenp + 1] = 0;
|
||||
|
||||
atom->valuep = str;
|
||||
}
|
||||
}
|
||||
atom->data = data;
|
||||
atom->quant = XML_REGEXP_QUANT_ONCEONLY;
|
||||
atom->min = min;
|
||||
@ -6077,7 +6077,7 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
return(to);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* xmlAutomataNewOnceTrans:
|
||||
@ -6146,7 +6146,7 @@ xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
*/
|
||||
xmlAutomataStatePtr
|
||||
xmlAutomataNewState(xmlAutomataPtr am) {
|
||||
xmlAutomataStatePtr to;
|
||||
xmlAutomataStatePtr to;
|
||||
|
||||
if (am == NULL)
|
||||
return(NULL);
|
||||
@ -6213,7 +6213,7 @@ xmlAutomataNewAllTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
*
|
||||
* Returns the counter number or -1 in case of error
|
||||
*/
|
||||
int
|
||||
int
|
||||
xmlAutomataNewCounter(xmlAutomataPtr am, int min, int max) {
|
||||
int ret;
|
||||
|
||||
@ -6285,7 +6285,7 @@ xmlAutomataNewCounterTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
|
||||
*
|
||||
* Returns the compiled regexp or NULL in case of error
|
||||
*/
|
||||
xmlRegexpPtr
|
||||
xmlRegexpPtr
|
||||
xmlAutomataCompile(xmlAutomataPtr am) {
|
||||
xmlRegexpPtr ret;
|
||||
|
||||
@ -6305,7 +6305,7 @@ xmlAutomataCompile(xmlAutomataPtr am) {
|
||||
*
|
||||
* Returns 1 if true, 0 if not, and -1 in case of error
|
||||
*/
|
||||
int
|
||||
int
|
||||
xmlAutomataIsDeterminist(xmlAutomataPtr am) {
|
||||
int ret;
|
||||
|
||||
@ -6358,7 +6358,7 @@ xmlExpNewCtxt(int maxNodes, xmlDictPtr dict) {
|
||||
|
||||
if (maxNodes <= 4096)
|
||||
maxNodes = 4096;
|
||||
|
||||
|
||||
ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt));
|
||||
if (ret == NULL)
|
||||
return(NULL);
|
||||
@ -6412,7 +6412,7 @@ xmlExpFreeCtxt(xmlExpCtxtPtr ctxt) {
|
||||
/* #define DEBUG_DERIV */
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* TODO:
|
||||
* - Wildcards
|
||||
* - public API for creation
|
||||
*
|
||||
@ -6480,7 +6480,7 @@ static unsigned short
|
||||
xmlExpHashNameComputeKey(const xmlChar *name) {
|
||||
unsigned short value = 0L;
|
||||
char ch;
|
||||
|
||||
|
||||
if (name != NULL) {
|
||||
value += 30 * (*name);
|
||||
while ((ch = *name++) != 0) {
|
||||
@ -6499,7 +6499,7 @@ xmlExpHashComputeKey(xmlExpNodeType type, xmlExpNodePtr left,
|
||||
xmlExpNodePtr right) {
|
||||
unsigned long value;
|
||||
unsigned short ret;
|
||||
|
||||
|
||||
switch (type) {
|
||||
case XML_EXP_SEQ:
|
||||
value = left->key;
|
||||
@ -6640,7 +6640,7 @@ xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type,
|
||||
left->exp_left->ref++;
|
||||
tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp,
|
||||
NULL, 0, 0);
|
||||
|
||||
|
||||
xmlExpFree(ctxt, left);
|
||||
return(tmp);
|
||||
}
|
||||
@ -6697,7 +6697,7 @@ xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type,
|
||||
return(right);
|
||||
}
|
||||
kbase = xmlExpHashComputeKey(type, left, right);
|
||||
} else
|
||||
} else
|
||||
return(NULL);
|
||||
|
||||
key = kbase % ctxt->size;
|
||||
@ -6938,7 +6938,7 @@ xmlExpNewRange(xmlExpCtxtPtr ctxt, xmlExpNodePtr subset, int min, int max) {
|
||||
************************************************************************/
|
||||
|
||||
static int
|
||||
xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
const xmlChar**list, int len, int nb) {
|
||||
int tmp, tmp2;
|
||||
tail:
|
||||
@ -6983,7 +6983,7 @@ tail:
|
||||
* -2 if there is more than @len strings
|
||||
*/
|
||||
int
|
||||
xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
const xmlChar**langList, int len) {
|
||||
if ((ctxt == NULL) || (exp == NULL) || (langList == NULL) || (len <= 0))
|
||||
return(-1);
|
||||
@ -6991,7 +6991,7 @@ xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
}
|
||||
|
||||
static int
|
||||
xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
const xmlChar**list, int len, int nb) {
|
||||
int tmp, tmp2;
|
||||
tail:
|
||||
@ -7051,7 +7051,7 @@ tail:
|
||||
* -2 if there is more than @len strings
|
||||
*/
|
||||
int
|
||||
xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
||||
const xmlChar**tokList, int len) {
|
||||
if ((ctxt == NULL) || (exp == NULL) || (tokList == NULL) || (len <= 0))
|
||||
return(-1);
|
||||
@ -7748,7 +7748,7 @@ xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
|
||||
xmlFree((xmlChar **) tab);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlExpExpDerive:
|
||||
* @ctxt: the expressions context
|
||||
@ -7800,7 +7800,7 @@ xmlExpExpDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
|
||||
int
|
||||
xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
|
||||
xmlExpNodePtr tmp;
|
||||
|
||||
|
||||
if ((exp == NULL) || (ctxt == NULL) || (sub == NULL))
|
||||
return(-1);
|
||||
|
||||
@ -7844,7 +7844,7 @@ xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Parsing expression *
|
||||
* Parsing expression *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
@ -7948,7 +7948,7 @@ parse_quantifier:
|
||||
ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
|
||||
0, -1);
|
||||
SKIP_BLANKS
|
||||
}
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -8070,7 +8070,7 @@ xmlExpDumpInt(xmlBufferPtr buf, xmlExpNodePtr expr, int glob) {
|
||||
break;
|
||||
case XML_EXP_COUNT: {
|
||||
char rep[40];
|
||||
|
||||
|
||||
c = expr->exp_left;
|
||||
if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
|
||||
xmlExpDumpInt(buf, c, 1);
|
||||
|
Reference in New Issue
Block a user