public Argument argument()
{
var name = test();
if (name == null)
return null;
var posStart = name.Start;
var posEnd = name.End;
CompFor f;
Exp defval = null;
if (Peek(TokenType.For))
{
f = comp_for();
return new Argument(name, f, filename, posStart, f.End);
}
else if (PeekAndDiscard(TokenType.EQ))
{
defval = test();
posEnd = defval.End;
}
else
{
defval = name;
name = null;
}
return new Argument(name, defval, filename, posStart, posEnd);
}