rem: return AP;
add: return SOAP_AP;
context: soap_get(struct soap *soap){ register wchar c;  c = soap->ahead;  if (c)    soap->ahead = 0;  else    c = soap_get1(soap);  for (;;)  { if (soap->cdata)    { if (c == ']')      { c = soap_get1(soap);        if (c == ']')        { soap->cdata = 0;          soap_get1(soap); /* skip > */          c = soap_get1(soap);        }	else        { soap_revget1(soap);          return ']';        }      }      else        return c;    }    switch (c)    { case '<':        do c = soap_get1(soap);        while (soap_blank(c));        if (c == '!' || c == '?' || c == '%')        { if (c == '!')          { c = soap_get1(soap);            if (c == '[')            { do c = soap_get1(soap);              while ((int)c != EOF && c != '[');              if ((int)c == EOF)                break;              soap->cdata = 1;              c = soap_get1(soap);	      continue;            }            if (c == '-' && (c = soap_get1(soap)) == '-')            { do              { c = soap_get1(soap);                if (c == '-' && (c = soap_get1(soap)) == '-')                  break;              } while ((int)c != EOF);            }          }          while ((int)c != EOF && c != '>')            c = soap_get1(soap);	  if ((int)c == EOF)	    break;          c = soap_get1(soap);          continue;        }        if (c == '/')          return TT;        soap_revget1(soap);        return LT;      case '>':        return GT;      case '"':        return QT;      case '\'':        return AP;      case '&':        return soap_char(soap) | 0x80000000;    }    break;  }  return c;}