internal string AnalyzePattern(string pat)
{
int length = pat.Length;
char[] destination = new char[length + 1];
pat.CopyTo(0, destination, 0, length);
destination[length] = '\0';
string str = null;
char[] chArray2 = new char[length + 1];
int num3 = 0;
int num4 = 0;
int index = 0;
while (index < length)
{
if ((destination[index] == '*') || (destination[index] == '%'))
{
while (((destination[index] == '*') || (destination[index] == '%')) && (index < length))
{
index++;
}
if (((index < length) && (num3 > 0)) || (num4 >= 2))
{
throw ExprException.InvalidPattern(pat);
}
num4++;
}
else if (destination[index] == '[')
{
index++;
if (index >= length)
{
throw ExprException.InvalidPattern(pat);
}
chArray2[num3++] = destination[index++];
if (index >= length)
{
throw ExprException.InvalidPattern(pat);
}
if (destination[index] != ']')
{
throw ExprException.InvalidPattern(pat);
}
index++;
}
else
{
chArray2[num3++] = destination[index];
index++;
}
}
str = new string(chArray2, 0, num3);
if (num4 == 0)
{
this.kind = 4;
return(str);
}
if (num3 > 0)
{
if ((destination[0] == '*') || (destination[0] == '%'))
{
if ((destination[length - 1] == '*') || (destination[length - 1] == '%'))
{
this.kind = 3;
return(str);
}
this.kind = 2;
return(str);
}
this.kind = 1;
return(str);
}
this.kind = 5;
return(str);
}