private function error($message = "Unexpected '%s'") { list(, $line, $col) = self::$tokenizer->getOffset($this->n); $token = isset(self::$tokenizer->tokens[$this->n]) ? str_replace("\n", '<new line>', NStrings::truncate(self::$tokenizer->tokens[$this->n], 40)) : 'end'; throw new NNeonException(str_replace('%s', $token, $message) . " on line $line, column $col."); }
public function __construct($input) { parent::__construct(array( self::T_WHITESPACE => '\s+', self::T_COMMENT => '(?s)/\*.*?\*/', self::T_STRING => NParser::RE_STRING, self::T_KEYWORD => '(?:true|false|null|and|or|xor|clone|new|instanceof|return|continue|break|[A-Z_][A-Z0-9_]{2,})(?![\w\pL_])', // keyword or const self::T_CAST => '\((?:expand|string|array|int|integer|float|bool|boolean|object)\)', // type casting self::T_VARIABLE => '\$[\w\pL_]+', self::T_NUMBER => '[+-]?[0-9]+(?:\.[0-9]+)?(?:e[0-9]+)?', self::T_SYMBOL => '[\w\pL_]+(?:-[\w\pL_]+)*', self::T_CHAR => '::|=>|[^"\']', // =>, any char except quotes ), 'u'); $this->ignored = array(self::T_COMMENT, self::T_WHITESPACE); $this->tokenize($input); }