48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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;
 | 
						|
    }
 | 
						|
 | 
						|
}
 |