PHPExcel_Writer_Excel5_Parser

category | PHPExcel
package | PHPExcel_Writer_Excel5
copyright | Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)

### Methods

## The class constructor

    __construct()

## Advance to the next valid token.

    _advance()

access | private

## pack() row and column into the required 3 or 4 byte format.

    _cellToPackedRowcol(string $cell) : array

access | private

### Parameters

#### $cell

`string`

The Excel cell reference to be packed

### Returns

`array`Array containing the row and column in packed() format

## Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero indexed row and column number.

    _cellToRowcol(string $cell) : array

Also returns two (0,1) values to indicate whether the row or column are relative references.

access | private

### Parameters

#### $cell

`string`

The Excel cell reference in A1 format.

### Returns

`array`

## It parses a condition.

    _condition() : mixed

It assumes the following rule: Cond -> Expr [(">" | "<") Expr]

access | private

### Returns

`mixed`The parsed ptg'd tree on success

## Convert a token to the proper ptg value.

    _convert(mixed $token) : mixed

access | private

### Parameters

#### $token

`mixed`

The token to convert.

### Returns

`mixed`the converted token on success

## Convert an error code to a ptgErr

    _convertError(string $errorCode) : string

access | private

### Parameters

#### $errorCode

`string`

The error code for conversion to its ptg value

### Returns

`string`The error code ptgErr

## Convert a function to a ptgFunc or ptgFuncVarV depending on the number of args that it takes.

    _convertFunction(string $token, integer $num_args) : string

access | private

### Parameters

#### $token

`string`

The name of the function for convertion to ptg value.

#### $num_args

`integer`

The number of arguments the function receives.

### Returns

`string`The packed ptg for the function

## Convert a number token to ptgInt or ptgNum

    _convertNumber(mixed $num)

access | private

### Parameters

#### $num

`mixed`

an integer or double for conversion to its ptg value

## Convert an Excel range such as A1:D4 to a ptgRefV.

    _convertRange2d(string $range, int $class)

access | private

### Parameters

#### $range

`string`

An Excel range in the A1:A2

#### $class

`int`

## Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to a ptgArea3d.

    _convertRange3d(string $token) : mixed

access | private

### Parameters

#### $token

`string`

An Excel range in the Sheet1!A1:A2 format.

### Returns

`mixed`The packed ptgArea3d token on success.

## Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV.

    _convertRef2d(string $cell) : string

access | private

### Parameters

#### $cell

`string`

An Excel cell reference

### Returns

`string`The cell in packed() format with the corresponding ptg

## Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a ptgRef3d.

    _convertRef3d(string $cell) : mixed

access | private

### Parameters

#### $cell

`string`

An Excel cell reference

### Returns

`mixed`The packed ptgRef3d token on success.

## Convert a string token to ptgStr

    _convertString(string $string) : mixed

access | private

### Parameters

#### $string

`string`

A string for conversion to its ptg value.

### Returns

`mixed`the converted token on success

## Creates a tree.

    _createTree(mixed $value, mixed $left, mixed $right) : array

In fact an array which may have one or two arrays (sub-trees) as elements.

access | private

### Parameters

#### $value

`mixed`

The value of this node.

#### $left

`mixed`

The left array (sub-tree) or a final node.

#### $right

`mixed`

The right array (sub-tree) or a final node.

### Returns

`array`A tree

## It parses a expression.

    _expression() : mixed

It assumes the following rule: Expr -> Term [("+" | "-") Term] -> "string" -> "-" Term : Negative value -> "+" Term : Positive value -> Error code

access | private

### Returns

`mixed`The parsed ptg'd tree on success

## It parses a factor.

    _fact() : mixed

It assumes the following rule: Fact -> ( Expr ) | CellRef | CellRange | Number | Function

access | private

### Returns

`mixed`The parsed ptg'd tree on success

## It parses a function call.

    _func() : mixed

It assumes the following rule: Func -> ( Expr [,Expr]* )

access | private

### Returns

`mixed`The parsed ptg'd tree on success

## Look up the REF index that corresponds to an external sheet name (or range).

    _getRefIndex(string $ext_ref) : mixed

If it doesn't exist yet add it to the workbook's references array. It assumes all sheet names given must exist.

access | private

### Parameters

#### $ext_ref

`string`

The name of the external reference

### Returns

`mixed`The reference index in packed() format on success

## Look up the index that corresponds to an external sheet name.

    _getSheetIndex(string $sheet_name) : integer

The hash of sheet names is updated by the addworksheet() method of the PHPExcel_Writer_Excel5_Workbook class.

access | private

### Parameters

#### $sheet_name

`string`

Sheet name

### Returns

`integer`The sheet index, -1 if the sheet was not found

## Initialize the ptg and function hashes.

    _initializeHashes()

access | private

## Checks if it's a valid token.

    _match(mixed $token) : mixed

access | private

### Parameters

#### $token

`mixed`

The token to check.

### Returns

`mixed`The checked token or false on failure

## Convert the sheet name part of an external reference, for example "Sheet1" or "Sheet1:Sheet2", to a packed structure.

    _packExtRef(string $ext_ref) : string

access | private

### Parameters

#### $ext_ref

`string`

The name of the external reference

### Returns

`string`The reference index in packed() format

## This function just introduces a ptgParen element in the tree, so that Excel doesn't get confused when working with a parenthesized formula afterwards.

    _parenthesizedExpression() : array

access | private
see | \_fact()

### Returns

`array`The parsed ptg'd tree

## pack() row range into the required 3 or 4 byte format.

    _rangeToPackedRange(string $range) : array

Just using maximum col/rows, which is probably not the correct solution

access | private

### Parameters

#### $range

`string`

The Excel range to be packed

### Returns

`array`Array containing (row1,col1,row2,col2) in packed() format

## It parses a term.

    _term() : mixed

It assumes the following rule: Term -> Fact [("*" | "/") Fact]

access | private

### Returns

`mixed`The parsed ptg'd tree on success

## The parsing method.

    parse(string $formula) : mixed

It parses a formula.

access | public

### Parameters

#### $formula

`string`

The formula to parse, without the initial equal sign (=).

### Returns

`mixed`true on success

## This method is used to update the array of sheet names.

    setExtSheet(string $name, integer $index)

It is called by the addWorksheet() method of the PHPExcel_Writer_Excel5_Workbook class.

access | public
see | \PHPExcel_Writer_Excel5_Workbook::addWorksheet()

### Parameters

#### $name

`string`

The name of the worksheet being added

#### $index

`integer`

The index of the worksheet being added

## Builds a string containing the tree in reverse polish notation (What you would use in a HP calculator stack).

    toReversePolish(array $tree) : string

The following tree:

+ / \ 2 3

produces: "23+"

The following tree:

+ / \ 3 * / \ 6 A1

produces: "36A1*+"

In fact all operands, functions, references, etc... are written as ptg's

access | public

### Parameters

#### $tree

`array`

The optional tree to convert.

### Returns

`string`The tree in reverse polish notation

### Properties

##

    $_current_char : integer

##

    $_current_token : string

##

    $_ext_sheets : array

##

    $_formula : string

##

    $_lookahead : string

##

    $_parse_tree : string

##

    $_references : array

### Constants

## REGEX_SHEET_TITLE_QUOTED

    REGEX_SHEET_TITLE_QUOTED

## REGEX_SHEET_TITLE_UNQUOTED

    REGEX_SHEET_TITLE_UNQUOTED