public Token CompleteType(Type type)
{
Token tok = this;
bool save = type != null;
if (tok.IsConst())
{
if(save) type.IsConst = true;
tok = tok.Next();
}
if (save) type.Name = tok.Value;
tok = tok.Next();
if (tok.IsTemplateBegin())
{
if (save)
{
type.IsTemplate = true;
type.SubType = new Type();
}
tok = tok.Next();
tok=tok.CompleteType(save ? type.SubType : null);
if(!tok.IsTemplateEnd())
{
Program.Log("Not closed template?");
}
tok = tok.Next();
}
//Console.WriteLine("endtok: " + tok.Value);
while (tok.IsTypeSpec())
{
//Console.WriteLine("mod: "+tok.Value);
if (save) type.ModName += tok.Value;
tok = tok.Next();
}
return tok;
}