int FindCodeAnyWithoutKeyword(IList<Token> tokens, ref int pos, out int depstyle)
{
int dep = 0;
Token? start = null;
depstyle = 0;
for (int i = pos; i < tokens.Count; i++)
{
if (tokens[i].type == TokenType.COMMENT) //注释忽略
{
continue;
}
if (start == null)
{
start = tokens[i];
pos = i;
if (start.Value.type == TokenType.PUNCTUATION)
{
if (start.Value.text == "{")
depstyle = 2;
if (start.Value.text == "(")
depstyle = 1;
//bdepstart = true;
}
}
if (tokens[i].type == TokenType.PUNCTUATION)
{
if (tokens[i].text == "{")
{
dep++;
}
if (tokens[i].text == "}")
{
dep--;
if (depstyle == 2 && dep == 0)
{
return i;
}
if (dep < 0)
return i - 1;
}
if (tokens[i].text == "(")
{
dep++;
}
if (tokens[i].text == ")")
{
dep--;
if (depstyle == 1 && dep == 0)
{
if (start.Value.text == "(" && dep == 0)
{
return i;
}
}
if (dep < 0)
return i - 1;
}
if (depstyle == 0)
{
if (tokens[i].text == ",")//,结束的表达式
{
if (dep == 0)
return i - 1;
}
if (tokens[i].text == ";")
{
if (dep == 0)
return i - 1;
}
}
}
}
if (dep != 0)
return -1;
else
return tokens.Count - 1;
}