org.apache.poi.ss.formula
Class FormulaParser

java.lang.Object
  extended by org.apache.poi.ss.formula.FormulaParser

@Internal
public final class FormulaParser
extends java.lang.Object

This class parses a formula string into a List of tokens in RPN order. Inspired by Lets Build a Compiler, by Jack Crenshaw BNF for the formula expression is : ::= [ ]* ::= [ ]* ::= | () | | ::= ([expression [, expression]*])

For POI internal use only


Method Summary
static Ptg[] parse(java.lang.String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex)
          Parse a formula into an array of tokens Side effect: creates name (Workbook.createName()) if formula contains unrecognized names (names are likely UDFs)
static Ptg[] parse(java.lang.String formula, FormulaParsingWorkbook workbook, FormulaType formulaType, int sheetIndex, int rowIndex)
          Parse a formula into an array of tokens Side effect: creates name (Workbook.createName()) if formula contains unrecognized names (names are likely UDFs)
static Area3DPxg parseStructuredReference(java.lang.String tableText, FormulaParsingWorkbook workbook, int rowIndex)
          Parse a structured reference.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

parse

public static Ptg[] parse(java.lang.String formula,
                          FormulaParsingWorkbook workbook,
                          FormulaType formulaType,
                          int sheetIndex,
                          int rowIndex)
Parse a formula into an array of tokens Side effect: creates name (Workbook.createName()) if formula contains unrecognized names (names are likely UDFs)

Parameters:
formula - the formula to parse
workbook - the parent workbook
formulaType - the type of the formula
sheetIndex - the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name
rowIndex - - the related cell's row index in 0-based form (-1 if the formula is not cell related) used to handle structured references that have the "#This Row" quantifier. Use rowIndex=-1 or parseStructuredReference(String, FormulaParsingWorkbook, int) if formula does not contain structured references.
Returns:
array of parsed tokens
Throws:
FormulaParseException - if the formula has incorrect syntax or is otherwise invalid

parse

public static Ptg[] parse(java.lang.String formula,
                          FormulaParsingWorkbook workbook,
                          FormulaType formulaType,
                          int sheetIndex)
Parse a formula into an array of tokens Side effect: creates name (Workbook.createName()) if formula contains unrecognized names (names are likely UDFs)

Parameters:
formula - the formula to parse
workbook - the parent workbook
formulaType - the type of the formula
sheetIndex - the 0-based index of the sheet this formula belongs to. The sheet index is required to resolve sheet-level names. -1 means that the scope of the name will be ignored and the parser will match names only by name
Returns:
array of parsed tokens
Throws:
FormulaParseException - if the formula has incorrect syntax or is otherwise invalid

parseStructuredReference

public static Area3DPxg parseStructuredReference(java.lang.String tableText,
                                                 FormulaParsingWorkbook workbook,
                                                 int rowIndex)
Parse a structured reference. Converts the structured reference to the area that represent it.

Parameters:
tableText - - The structured reference text
workbook - - the parent workbook
rowIndex - - the 0-based cell's row index ( used to handle "#This Row" quantifiers )
Returns:
the area that being represented by the structured reference.