/** Grammars digested by ScCompiler.
*/ class FORMULA_DLLPUBLIC FormulaGrammar
{ public: enum AddressConvention{
CONV_UNSPECIFIED = -1, /* useful when we want method to choose, must be first */
/* elements must be sequential and changes should be reflected in ScCompiler::pCharTables */
CONV_OOO = 0, /* 'doc'#sheet.A1:sheet2.B2 */
CONV_ODF, /* ['doc'#sheet.A1:sheet2.B2] */
CONV_XL_A1, /* [doc]sheet:sheet2!A1:B2 */
CONV_XL_R1C1, /* [doc]sheet:sheet2!R1C1:R2C2 */
CONV_XL_OOX, /* [#]sheet:sheet2!A1:B2 */
// not a real address convention, a special case for INDIRECT function interpretation // only -> try using CONV_OOO, failing that CONV_XL_A1
CONV_A1_XL_A1
};
//! CONV_UNSPECIFIED is a negative value! staticconstint kConventionOffset = - CONV_UNSPECIFIED + 1; // Room for 32k hypothetical languages plus EXTERNAL. staticconstint kConventionShift = 16; // Room for 256 reference conventions. staticconstint kEnglishBit = (1 << (kConventionShift + 8)); // Mask off all non-language bits. staticconstint kFlagMask = ~((~unsigned(0)) << kConventionShift);
/** Values encoding the formula language plus address reference convention plusEnglishparsing/formatting
*/ //! When adding new values adapt isSupported() below as well. enum Grammar
{ /// Used only in ScCompiler ctor and in some XML import API context.
GRAM_UNSPECIFIED = -1, /// ODFF with default ODF A1 bracketed references.
GRAM_ODFF = css::sheet::FormulaLanguage::ODFF |
((CONV_ODF +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// ODF 1.1 with default ODF A1 bracketed references.
GRAM_PODF = css::sheet::FormulaLanguage::ODF_11 |
((CONV_ODF +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// English with default A1 reference style.
GRAM_ENGLISH = css::sheet::FormulaLanguage::ENGLISH |
((CONV_OOO +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// Native with default A1 reference style.
GRAM_NATIVE = css::sheet::FormulaLanguage::NATIVE |
((CONV_OOO +
kConventionOffset) << kConventionShift), /// ODFF with reference style as set in UI, may be A1 or R1C1.
GRAM_ODFF_UI = css::sheet::FormulaLanguage::ODFF |
((CONV_UNSPECIFIED +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// ODFF with A1 reference style, unbracketed.
GRAM_ODFF_A1 = css::sheet::FormulaLanguage::ODFF |
((CONV_OOO +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// ODF 1.1 with reference style as set in UI, may be A1 or R1C1.
GRAM_PODF_UI = css::sheet::FormulaLanguage::ODF_11 |
((CONV_UNSPECIFIED +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// ODF 1.1 with A1 reference style, unbracketed.
GRAM_PODF_A1 = css::sheet::FormulaLanguage::ODF_11 |
((CONV_OOO +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// Native with reference style as set in UI, may be A1 or R1C1.
GRAM_NATIVE_UI = css::sheet::FormulaLanguage::NATIVE |
((CONV_UNSPECIFIED +
kConventionOffset) << kConventionShift), /// Native with ODF A1 bracketed references. Not very useful but supported.
GRAM_NATIVE_ODF = css::sheet::FormulaLanguage::NATIVE |
((CONV_ODF +
kConventionOffset) << kConventionShift), /// Native with Excel A1 reference style.
GRAM_NATIVE_XL_A1 = css::sheet::FormulaLanguage::NATIVE |
((CONV_XL_A1 +
kConventionOffset) << kConventionShift), /// Native with Excel R1C1 reference style.
GRAM_NATIVE_XL_R1C1 = css::sheet::FormulaLanguage::NATIVE |
((CONV_XL_R1C1 +
kConventionOffset) << kConventionShift), /// English with Excel A1 reference style.
GRAM_ENGLISH_XL_A1 = css::sheet::FormulaLanguage::XL_ENGLISH |
((CONV_XL_A1 +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// English with Excel R1C1 reference style.
GRAM_ENGLISH_XL_R1C1 = css::sheet::FormulaLanguage::XL_ENGLISH |
((CONV_XL_R1C1 +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// English with Excel OOXML reference style.
GRAM_ENGLISH_XL_OOX = css::sheet::FormulaLanguage::XL_ENGLISH |
((CONV_XL_OOX +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// Excel OOXML with Excel OOXML reference style.
GRAM_OOXML = css::sheet::FormulaLanguage::OOXML |
((CONV_XL_OOX +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// API English with A1 reference style, unbracketed.
GRAM_API = css::sheet::FormulaLanguage::API |
((CONV_OOO +
kConventionOffset) << kConventionShift) |
kEnglishBit, /// Central definition of the default grammar to be used.
GRAM_DEFAULT = GRAM_NATIVE_UI,
/// Central definition of the default storage grammar to be used.
GRAM_STORAGE_DEFAULT = GRAM_ODFF,
/** OpCodeMap set by external filter and merged with reference conventionplusEnglishbitontop.Plainvalueactsas
FormulaLanguage. */
GRAM_EXTERNAL = (1 << (kConventionShift - 1))
};
/// If English parsing/formatting is associated with a grammar. staticbool isEnglish( const Grammar eGrammar )
{ return (eGrammar & kEnglishBit) != 0;
}
/** Compatibility helper for old "bCompileEnglish, bCompileXML" API calls
to obtain the new grammar. */ static Grammar mapAPItoGrammar( constbool bEnglish, constbool bXML );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.