XLSX writes the # operator as _xlfn.ANCHORARRAY around its operand. The walk spliced that wrapper at the start of the last factor, but the grammar puts the # above the range, intersection and union operators, so all of those belong inside the operand. A1~B2# came out as (A1,_xlfn.ANCHORARRAY(B2)) and A1:INDEX(B1:B10;5)# as A1:_xlfn.ANCHORARRAY(INDEX(B1:B10,5)). Each parenthesis scope already records where its union-level expression begins, which is in front of every operator the # binds looser than. The wrapper splices there instead, and an open union list takes its own parentheses first. Nothing reads the separate stack of factor starts now. Its depth matched the scope stack's, so that stack carries it and the vector is gone. Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> Change-Id: I6fd212a0e97ee40ce04c27a758f78669d3fce5f8 Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9309 Tested-by: Jenkins CPCI <releng@collaboraoffice.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 82f4f2386f5d752a890de306fb89c314c4d87a1f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209412 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
Formula Helper Code
Contains parts of the formula parser used outside LibreOffice Calc code that has been pulled out from Calc's formula parser code.
Also contains some functions that are needed by code in both sc and
scaddins. Located here just for convenience. So sue me.