[xoops-cvslog 5403] CVS update: xoops2jp/html/modules/legacy/admin/class

Back to archive index

Minahito minah****@users*****
2006年 10月 19日 (木) 19:21:10 JST


Index: xoops2jp/html/modules/legacy/admin/class/EasyLex_SQLScanner.class.php
diff -u xoops2jp/html/modules/legacy/admin/class/EasyLex_SQLScanner.class.php:1.1.2.1 xoops2jp/html/modules/legacy/admin/class/EasyLex_SQLScanner.class.php:removed
--- xoops2jp/html/modules/legacy/admin/class/EasyLex_SQLScanner.class.php:1.1.2.1	Sat Oct 14 23:55:23 2006
+++ xoops2jp/html/modules/legacy/admin/class/EasyLex_SQLScanner.class.php	Thu Oct 19 19:21:10 2006
@@ -1,415 +0,0 @@
-<?php
-/**
- * @package EasyLexSQL
- * @varsion $Id$
- * 
- * In the original BSD license, both occurrences of the phrase "COPYRIGHT
- * HOLDERS AND CONTRIBUTORS" in the disclaimer read "REGENTS AND CONTRIBUTORS".
- * 
- * Copyright (c) 2006, XOOPS Cube Project team/minahito (minah****@users*****)
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- * a) Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * b) Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * c) Neither the name of the XOOPS Cube Project team nor the names of its
- *    contributors may be used to endorse or promote products derived from this
- *    software without specific prior written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-define('EASYLEX_SQL_UNKNOWN', 0);
-define('EASYLEX_SQL_DIGIT', 1);
-define('EASYLEX_SQL_LETTER', 2);
-define('EASYLEX_SQL_STRING_LITERAL', 3);
-define('EASYLEX_SQL_STRING_LITERAL_ESCAPE', 10);
-define('EASYLEX_SQL_OPEN_PARENTHESIS', 4);
-define('EASYLEX_SQL_CLOSE_PARENTHESIS', 5);
-define('EASYLEX_SQL_SEPARATER', 6);
-define('EASYLEX_SQL_SEMICOLON', 7);
-define('EASYLEX_SQL_MARK', 8);
-define('EASYLEX_SQL_COMMA', 9);
-
-/**
- * This is BSD easy lexcal scanner for SQL.
- * 
- * @version 1.00
- */
-class EasyLex_SQLScanner
-{
-	var $mTokens;
-	var $mStatus = EASYLEX_SQL_UNKNOWN;
-	
-	/**
-	 * @var Array of char
-	 */
-	var $mBuffer = array();
-	
-	var $mIndex = 0;
-	
-	var $mActiveToken = '';
-	
-	var $mActiveQuoteMark = null;
-	
-	function setBuffer($buffer)
-	{
-		$this->mBuffer = array();
-		for ($i = 0; $i < strlen($buffer); $i++) {
-			$this->mBuffer[$i] = $buffer{$i};
-		}
-		
-		$this->mIndex = 0;
-	}
-	
-	function parse()
-	{
-		while ($this->mIndex <= count($this->mBuffer)) {
-			if ($this->mIndex == count($this->mBuffer)) {
-				$ch = '';
-				$type = EASYLEX_SQL_UNKNOWN;
-			}
-			else {
-				$ch = $this->mBuffer[$this->mIndex];
-				$type = $this->_getChrType($ch);
-			}
-			
-			switch ($this->mStatus) {
-				case EASYLEX_SQL_UNKNOWN:
-					$this->_parseUnknown($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_DIGIT:
-					$this->_parseDigit($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_LETTER:
-					$this->_parseLetter($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_STRING_LITERAL:
-					$this->_parseStringLiteral($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_STRING_LITERAL_ESCAPE:
-					$this->_parseStringLiteralEscape($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_OPEN_PARENTHESIS:
-					$this->_parseOpenParenthesis($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_CLOSE_PARENTHESIS:
-					$this->_parseCloseParenthesis($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_SEPARATER:
-					$this->_parseSeparater($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_MARK:
-					$this->_parseMark($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_SEMICOLON:
-					$this->_parseSemicolon($ch, $type);
-					break;
-					
-				case EASYLEX_SQL_COMMA:
-					$this->_parseComma($ch, $type);
-					break;
-			}
-		}
-	}
-	
-	/**
-	 * Load file and set buffer. If $preprocess is true, scan commetns and
-	 * remove these.
-	 * 
-	 * @param  string $path file path
-	 * @param  bool   $preprocess
-	 * @return bool
-	 */
-	function loadFile($path, $preprocess = true)
-	{
-		if (!file_exists($path)) {
-			return false;
-		}
-
-		$fp = fopen($path, "rb");
-		if (!$fp) {
-			return false;
-		}
-		
-		$t_buff = "";
-		while ($str = fgets($fp)) {
-			if ($preprocess) {
-				$str = preg_replace("/^\s*\#.*/", "", $str);
-			}
-			$t_buff .= $str;
-		}
-		
-		$this->setBuffer($t_buff);
-		
-		fclose($fp);
-		return true;
-	}
-	
-	function _getChrType($ch)
-	{
-		if (preg_match("/\s/", $ch)) {
-			return EASYLEX_SQL_SEPARATER;
-		}
-		
-		if ($ch == '(') {
-			return EASYLEX_SQL_OPEN_PARENTHESIS;
-		}
-		
-		if ($ch == ')') {
-			return EASYLEX_SQL_CLOSE_PARENTHESIS;
-		}
-		
-		if ($ch == ';') {
-			return EASYLEX_SQL_SEMICOLON;
-		}
-		
-		if ($ch == ',') {
-			return EASYLEX_SQL_COMMA;
-		}
-		
-		if (preg_match("/[0-9]/", $ch)) {
-			return EASYLEX_SQL_DIGIT;
-		}
-		
-		if (preg_match("/[!=<>%\*]/", $ch)) {
-			return EASYLEX_SQL_MARK;
-		}
-		
-		return EASYLEX_SQL_LETTER;
-	}
-	
-	function _parseUnknown($ch, $type)
-	{
-		$this->mStatus = $type;
-		$this->mActiveToken .= $ch;
-		$this->mIndex++;
-		
-		if ($ch == "'" || $ch == '"' || $ch == '`') {
-			$this->mStatus = EASYLEX_SQL_STRING_LITERAL;
-			$this->mActiveQuoteMark = $ch;
-		}
-
-	}
-	
-	function _parseDigit($ch, $type)
-	{
-		if ($type == EASYLEX_SQL_DIGIT) {
-			$this->mActiveToken .= $ch;
-			$this->mIndex++;
-		}
-		elseif ($type == EASYLEX_SQL_LETTER) {
-			$this->mStatus = EASYLEX_SQL_LETTER;
-			$this->mActiveToken .= $ch;
-			$this->mIndex++;
-		}
-		else {
-			$this->_createToken();
-		}
-	}
-	
-	function _parseLetter($ch, $type)
-	{
-		if ($type == EASYLEX_SQL_LETTER || $type == EASYLEX_SQL_DIGIT) {
-			$this->mActiveToken .= $ch;
-			$this->mIndex++;
-		}
-		else {
-			$this->_createToken();
-		}
-	}
-	
-	function _parseStringLiteral($ch, $type)
-	{
-		$this->mActiveToken .= $ch;
-		$this->mIndex++;
-		
-		if ($ch == "\\") {
-			$this->mStatus = EASYLEX_SQL_STRING_LITERAL_ESCAPE;
-		}
-		elseif ($ch == $this->mActiveQuoteMark) {
-			$this->_createToken();
-		}
-	}
-	
-	function _parseStringLiteralEscape($ch, $type)
-	{
-		$this->mStatus = EASYLEX_SQL_STRING_LITERAL;
-	}
-	
-	function _parseOpenParenthesis($ch, $type)
-	{
-		$this->_createToken();
-	}
-	
-	function _parseCloseParenthesis($ch, $type)
-	{
-		$this->_createToken();
-	}
-	
-	function _parseSeparater($ch, $type)
-	{
-		if ($type == EASYLEX_SQL_SEPARATER) {
-			$this->mActiveToken .= $ch;
-			$this->mIndex++;
-		}
-		else {
-			// $this->_createToken();
-			$this->mStatus = EASYLEX_SQL_UNKNOWN;
-			$this->mActiveToken = "";
-		}
-	}
-	
-	function _parseSemicolon($ch, $type)
-	{
-		$this->_createToken();
-	}
-	
-	function _parseMark($ch, $type)
-	{
-		if ($type == EASYLEX_SQL_MARK) {
-			$this->mActiveToken .= $ch;
-			$this->mIndex++;
-		}
-		else {
-			$this->_createToken();
-		}
-	}
-	
-	function _parseComma($ch, $type)
-	{
-		$this->_createToken();
-	}
-	
-	function _createToken($type = null, $value = null)
-	{
-		if ($type === null) {
-			$type = $this->mStatus;
-		}
-		
-		if ($value === null) {
-			$value = $this->mActiveToken;
-		}
-		
-		$token =& new EasyLex_SQLToken($type, $value);
-		$this->mTokens[] =& $token;
-		
-		$this->mStatus = EASYLEX_SQL_UNKNOWN;
-		$this->mActiveToken = "";
-		
-		return $token;
-	}
-	
-	/**
-	 * Return Array of operations.
-	 * 
-	 * @return Array $ret[Index] = Array of tokens.
-	 */
-	function &getOperations()
-	{
-		$ret = array();
-		$t_tokens = array();
-		$depth = 0;
-		
-		foreach (array_keys($this->mTokens) as $key) {
-			if ($this->mTokens[$key]->mType == EASYLEX_SQL_OPEN_PARENTHESIS) {
-				$depth++;
-			}
-			elseif ($this->mTokens[$key]->mType == EASYLEX_SQL_CLOSE_PARENTHESIS) {
-				$depth--;
-			}
-			
-			$t_tokens[] =& $this->mTokens[$key];
-			
-			if ($this->mTokens[$key]->mType == EASYLEX_SQL_SEMICOLON && $depth == 0) {
-				$ret[] =& $t_tokens;
-				unset($t_tokens);
-				$t_tokens = array();
-			}
-		}
-		
-		if (count($t_tokens) > 0) {
-			$ret[] =& $t_tokens;
-			unset($t_tokens);
-		}
-		
-		return $ret;
-	}
-	
-	function getSQL()
-	{
-		$sqls = array();
-		$lines =& $this->getOperations();
-		
-		foreach ($lines as $line) {
-			$t_arr = array();
-			foreach ($line as $token) {
-				$t_arr[] = $token->getOutputValue();
-			}
-			$sqls[] = join(" ", $t_arr);
-		}
-		
-		return $sqls;
-	}
-}
-
-class EasyLex_SQLToken
-{
-	var $mType = EASYLEX_SQL_UNKNOWN;
-	var $mValue = "";
-	
-	function EasyLex_SQLToken($type, $value)
-	{
-		$this->mType = $type;
-		$this->mValue = $value;
-	}
-	
-	function getOutputValue()
-	{
-		if ($this->mType == EASYLEX_SQL_SEPARATER) {
-			return "";
-		}
-		else {
-			return $this->mValue;
-		}
-	}
-	
-	function getValue()
-	{
-		if ($this->mType == EASYLEX_SQL_SEPARATER) {
-			return "";
-		}
-		
-		if ($this->mType == EASYLEX_SQL_STRING_LITERAL) {
-			return substr($this->mValue, 1, strlen($this->mValue) - 2);
-		}
-		
-		return $this->mValue;
-	}
-}
-
-?>
\ No newline at end of file


xoops-cvslog メーリングリストの案内
Back to archive index