From f1346b61ad6850df3fd362f9096e1e0f0852058a Mon Sep 17 00:00:00 2001 From: Xavier Noguer Gallego Date: Fri, 28 Mar 2003 01:23:00 +0000 Subject: [PATCH] fixing problem with unparenthesized expresions in formulas (Brent Laminack) git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@121449 c90b9560-bf6c-de11-be94-00142212c4b1 --- Writer/Parser.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Writer/Parser.php b/Writer/Parser.php index c71b978..ba117df 100644 --- a/Writer/Parser.php +++ b/Writer/Parser.php @@ -974,7 +974,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR while($i < strlen($this->_formula)) { $token .= $this->_formula{$i}; - if($this->_match($token)) + if($this->_match($token) != false) { if($i < strlen($this->_formula) - 1) { $this->_lookahead = $this->_formula{$i+1}; @@ -986,6 +986,10 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR if ($i < strlen($this->_formula) - 2) { $this->_lookahead = $this->_formula{$i+2}; } + // if we run out of characters _lookahead becomes empty + else { + $this->_lookahead = ''; + } $i++; } //die("Lexical error ".$this->_current_char); @@ -996,6 +1000,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR * * @access private * @param mixed $token The token to check. + * @return mixed The checked token or false on failure */ function _match($token) { @@ -1095,7 +1100,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR { return($token); } - return(0); + return false; } } @@ -1198,7 +1203,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR // If it's a string return a string node if (ereg("^\"[^\"]{0,255}\"$", $this->_current_token)) { - $result = $this->_current_token; + $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return($result); } @@ -1309,14 +1314,14 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR // if it's a reference if (eregi("^[A-I]?[A-Z][0-9]+$",$this->_current_token)) { - $result = $this->_current_token; + $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return($result); } // If it's an external reference (Sheet1!A1) elseif(eregi("^[A-Za-z0-9]+\![A-I]?[A-Z][0-9]+$",$this->_current_token)) { - $result = $this->_current_token; + $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return($result); } @@ -1337,7 +1342,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR } elseif (is_numeric($this->_current_token)) { - $result = $this->_current_token; + $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return($result); }