| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- <?php namespace Sieve;
 
- require_once('SieveToken.php');
 
- use Exception;
 
- class SieveException extends Exception
 
- {
 
-     protected $token_;
 
-     public function __construct(SieveToken $token, $arg)
 
-     {
 
-         $message = 'undefined sieve exception';
 
-         $this->token_ = $token;
 
-         if (is_string($arg))
 
-         {
 
-             $message = $arg;
 
-         }
 
-         else
 
-         {
 
-             if (is_array($arg))
 
-             {
 
-                 $type = SieveToken::typeString(array_shift($arg));
 
-                 foreach($arg as $t)
 
-                 {
 
-                     $type .= ' or '. SieveToken::typeString($t);
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 $type = SieveToken::typeString($arg);
 
-             }
 
-             $tokenType = SieveToken::typeString($token->type);
 
-             $message = "$tokenType where $type expected near ". $token->text;
 
-         }
 
-         parent::__construct('line '. $token->line .": $message");
 
-     }
 
-     public function getLineNo()
 
-     {
 
-         return $this->token_->line;
 
-     }
 
- }
 
 
  |