Class 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 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.