Lines 993-998
Link Here
|
993 |
xub_StrLen nSrcPos, |
993 |
xub_StrLen nSrcPos, |
994 |
const CharClass* pCharClass) const |
994 |
const CharClass* pCharClass) const |
995 |
{ |
995 |
{ |
|
|
996 |
//Tokens that start at ' can have anything in them until a final ' |
997 |
//but '' marks an escaped ' |
998 |
//We've earlier guaranteed that a string containing '' will be |
999 |
//surrounded by ' |
1000 |
if (rFormula.GetChar(nSrcPos) == '\'') |
1001 |
{ |
1002 |
xub_StrLen nPos = nSrcPos+1; |
1003 |
while (nPos < rFormula.Len()) |
1004 |
{ |
1005 |
if (rFormula.GetChar(nPos) == '\'') |
1006 |
{ |
1007 |
if ( (nPos+1 == rFormula.Len()) || (rFormula.GetChar(nPos+1) != '\'') ) |
1008 |
{ |
1009 |
ParseResult aRet; |
1010 |
aRet.TokenType = KParseType::SINGLE_QUOTE_NAME; |
1011 |
aRet.EndPos = nPos+1; |
1012 |
return aRet; |
1013 |
} |
1014 |
++nPos; |
1015 |
} |
1016 |
++nPos; |
1017 |
} |
1018 |
} |
1019 |
|
996 |
static const sal_Int32 nStartFlags = KParseTokens::ANY_LETTER_OR_NUMBER | |
1020 |
static const sal_Int32 nStartFlags = KParseTokens::ANY_LETTER_OR_NUMBER | |
997 |
KParseTokens::ASC_UNDERSCORE | KParseTokens::ASC_DOLLAR; |
1021 |
KParseTokens::ASC_UNDERSCORE | KParseTokens::ASC_DOLLAR; |
998 |
static const sal_Int32 nContFlags = nStartFlags | KParseTokens::ASC_DOT; |
1022 |
static const sal_Int32 nContFlags = nStartFlags | KParseTokens::ASC_DOT; |
Lines 1524-1552
Link Here
|
1524 |
void ScCompiler::CheckTabQuotes( String& rString, |
1538 |
void ScCompiler::CheckTabQuotes( String& rString, |
1525 |
const ScAddress::Convention eConv ) |
1539 |
const ScAddress::Convention eConv ) |
1526 |
{ |
1540 |
{ |
1527 |
register const xub_StrLen nLen = rString.Len(); |
1541 |
using namespace ::com::sun::star::i18n; |
1528 |
register xub_StrLen i; |
1542 |
sal_Int32 nStartFlags = KParseTokens::ANY_LETTER_OR_NUMBER | KParseTokens::ASC_UNDERSCORE; |
1529 |
|
1543 |
sal_Int32 nContFlags = nStartFlags; |
1530 |
bool bNeedsQuote = false; |
1544 |
ParseResult aRes = ScGlobal::pCharClass->parsePredefinedToken( |
1531 |
|
1545 |
KParseType::IDENTNAME, rString, 0, nStartFlags, EMPTY_STRING, nContFlags, EMPTY_STRING); |
1532 |
for ( i = 0 ; i < nLen ; i++ ) |
1546 |
bool bNeedsQuote = !((aRes.TokenType & KParseType::IDENTNAME) && aRes.EndPos == rString.Len()); |
1533 |
{ |
|
|
1534 |
if( !IsWordChar( rString, i ) ) |
1535 |
{ |
1536 |
bNeedsQuote = true; |
1537 |
break; |
1538 |
} |
1539 |
} |
1540 |
if ( !bNeedsQuote && CharClass::isAsciiNumeric( rString ) ) |
1541 |
{ |
1542 |
bNeedsQuote = true; |
1543 |
} |
1544 |
|
1547 |
|
1545 |
switch ( eConv ) { |
1548 |
switch ( eConv ) { |
1546 |
default : |
1549 |
default : |
1547 |
case ScAddress::CONV_UNSPECIFIED : |
1550 |
case ScAddress::CONV_UNSPECIFIED : |
1548 |
case ScAddress::CONV_OOO : |
|
|
1549 |
break; |
1551 |
break; |
|
|
1552 |
case ScAddress::CONV_OOO : |
1550 |
case ScAddress::CONV_XL_A1 : |
1553 |
case ScAddress::CONV_XL_A1 : |
1551 |
case ScAddress::CONV_XL_R1C1 : |
1554 |
case ScAddress::CONV_XL_R1C1 : |
1552 |
if( bNeedsQuote ) |
1555 |
if( bNeedsQuote ) |