public static function init() { static $isInited = false; if (!$isInited) { self::_buildMaps(); self::$TOKEN_TYPE = self::$_TOKEN_TYPES; self::$_EMPTY_TOKEN = self::makeToken('', self::$_TOKEN_TYPES['EMPTY_TOKEN']); self::$_EMPTY_STRING = self::makeToken('', self::$_TOKEN_TYPES['STRING_LITERAL']); self::$EMPTY_TOKEN = self::$_EMPTY_TOKEN; self::$EMPTY_STRING = self::$_EMPTY_STRING; self::$UNARY_NEGATIVE = self::makeToken(self::$_UNARY_NEGATIVE, self::$_TOKEN_TYPES['UNARY_NEGATIVE']); self::$UNARY_NEGATION = self::makeToken(self::$_UNARY_NEGATION, self::$_TOKEN_TYPES['UNARY_NEGATION']); self::$ARG_TERMINAL = self::makeToken(self::$_ARG_TERMINAL, self::$_TOKEN_TYPES['ARG_TERMINAL']); $isInited = true; } }