public IExpression Parse(Parser parser, IExpression left, Token<TokenType> token) { IExpression right = parser.TakeExpression(Predecence.Assign); if (!(left is NameExpression)) // TODO: should the parser do this check? throw new ParseException(left.GetLocation(), String.Format("Assign must be to a name (got {0})", left.GetType().Name)); return new AssignExpression(left as NameExpression, right, token); }