INTEGRATION: CWS jl5vba (1.8.94); FILE MERGED

2004/01/21 09:03:01 ab 1.8.94.1: #111934# Merge to src680, for tasks see message INTEGRATION: CWS ab02vba (1.8.6)
This commit is contained in:
Oliver Bolte
2004-03-17 12:33:38 +00:00
parent cc83b70dbc
commit 82bd05da2a

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: scanner.cxx,v $
*
* $Revision: 1.8 $
* $Revision: 1.9 $
*
* last change: $Author: rt $ $Date: 2003-04-23 16:57:09 $
* last change: $Author: obo $ $Date: 2004-03-17 13:33:38 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -95,7 +95,8 @@ SbiScanner::SbiScanner( const ::rtl::OUString& rBuf, StarBASIC* p ) : aBuf( rBuf
bSpaces =
bNumber =
bSymbol =
bUsedForHilite = FALSE;
bUsedForHilite =
bCompatible = FALSE;
bHash =
bErrors = TRUE;
}
@@ -230,7 +231,7 @@ BOOL SbiScanner::NextSym()
if( *pLine == '#' ) pLine++, nCol++, bHash = TRUE;
// Symbol? Dann Zeichen kopieren.
if( BasicSimpleCharClass::isAlpha( *pLine & 0xFF ) || *pLine == '_' )
if( BasicSimpleCharClass::isAlpha( *pLine & 0xFF, bCompatible ) || *pLine == '_' )
{
// Wenn nach '_' nichts kommt, ist es ein Zeilenabschluss!
if( *pLine == '_' && !*(pLine+1) )
@@ -238,7 +239,7 @@ BOOL SbiScanner::NextSym()
goto eoln; }
bSymbol = TRUE;
short n = nCol;
for ( ; (BasicSimpleCharClass::isAlphaNumeric( *pLine & 0xFF ) || ( *pLine == '_' ) ); pLine++ )
for ( ; (BasicSimpleCharClass::isAlphaNumeric( *pLine & 0xFF, bCompatible ) || ( *pLine == '_' ) ); pLine++ )
nCol++;
aSym = aLine.copy( n, nCol - n );
// Abschliessendes '_' durch Space ersetzen, wenn Zeilenende folgt
@@ -248,7 +249,7 @@ BOOL SbiScanner::NextSym()
// Typkennung?
// Das Ausrufezeichen bitte nicht testen, wenn
// danach noch ein Symbol anschliesst
else if( *pLine != '!' || !BasicSimpleCharClass::isAlpha( pLine[ 1 ] & 0xFF ) )
else if( *pLine != '!' || !BasicSimpleCharClass::isAlpha( pLine[ 1 ] & 0xFF, bCompatible ) )
{
SbxDataType t = GetSuffixType( *pLine );
if( t != SbxVARIANT )
@@ -376,7 +377,7 @@ BOOL SbiScanner::NextSym()
long l = 0;
int i;
BOOL bBufOverflow = FALSE;
while( BasicSimpleCharClass::isAlphaNumeric( *pLine & 0xFF ) )
while( BasicSimpleCharClass::isAlphaNumeric( *pLine & 0xFF, bCompatible ) )
{
sal_Unicode ch = toupper( *pLine & 0xFF );
pLine++; nCol++;
@@ -431,11 +432,16 @@ BOOL SbiScanner::NextSym()
// Doppelte Stringbegrenzer raus
String s( cSep );
s += cSep;
USHORT nIdx;
do {
nIdx = aSym.Search( s );
USHORT nIdx = 0;
do
{
nIdx = aSym.Search( s, nIdx );
if( nIdx == STRING_NOTFOUND )
break;
aSym.Erase( nIdx, 1 );
} while( nIdx != STRING_NOTFOUND );
nIdx++;
}
while( true );
if( cSep != ']' )
eScanType = ( cSep == '#' ) ? SbxDATE : SbxSTRING;
}
@@ -489,3 +495,73 @@ eoln:
}
}
IsoLatinLetterTable BasicSimpleCharClass::aLetterTable;
IsoLatinLetterTable::IsoLatinLetterTable( void )
{
for( int i = 0 ; i < 256 ; ++i )
IsLetterTab[i] = false;
IsLetterTab[0xC0] = true; // <20> , CAPITAL LETTER A WITH GRAVE ACCENT
IsLetterTab[0xC1] = true; // <20> , CAPITAL LETTER A WITH ACUTE ACCENT
IsLetterTab[0xC2] = true; // <20> , CAPITAL LETTER A WITH CIRCUMFLEX ACCENT
IsLetterTab[0xC3] = true; // <20> , CAPITAL LETTER A WITH TILDE
IsLetterTab[0xC4] = true; // <20> , CAPITAL LETTER A WITH DIAERESIS
IsLetterTab[0xC5] = true; // <20> , CAPITAL LETTER A WITH RING ABOVE
IsLetterTab[0xC6] = true; // <20> , CAPITAL LIGATURE AE
IsLetterTab[0xC7] = true; // <20> , CAPITAL LETTER C WITH CEDILLA
IsLetterTab[0xC8] = true; // <20> , CAPITAL LETTER E WITH GRAVE ACCENT
IsLetterTab[0xC9] = true; // <20> , CAPITAL LETTER E WITH ACUTE ACCENT
IsLetterTab[0xCA] = true; // <20> , CAPITAL LETTER E WITH CIRCUMFLEX ACCENT
IsLetterTab[0xCB] = true; // <20> , CAPITAL LETTER E WITH DIAERESIS
IsLetterTab[0xCC] = true; // <20> , CAPITAL LETTER I WITH GRAVE ACCENT
IsLetterTab[0xCD] = true; // <20> , CAPITAL LETTER I WITH ACUTE ACCENT
IsLetterTab[0xCE] = true; // <20> , CAPITAL LETTER I WITH CIRCUMFLEX ACCENT
IsLetterTab[0xCF] = true; // <20> , CAPITAL LETTER I WITH DIAERESIS
IsLetterTab[0xD0] = true; // <20> , CAPITAL LETTER ETH
IsLetterTab[0xD1] = true; // <20> , CAPITAL LETTER N WITH TILDE
IsLetterTab[0xD2] = true; // <20> , CAPITAL LETTER O WITH GRAVE ACCENT
IsLetterTab[0xD3] = true; // <20> , CAPITAL LETTER O WITH ACUTE ACCENT
IsLetterTab[0xD4] = true; // <20> , CAPITAL LETTER O WITH CIRCUMFLEX ACCENT
IsLetterTab[0xD5] = true; // <20> , CAPITAL LETTER O WITH TILDE
IsLetterTab[0xD6] = true; // <20> , CAPITAL LETTER O WITH DIAERESIS
IsLetterTab[0xD8] = true; // <20> , CAPITAL LETTER O WITH STROKE
IsLetterTab[0xD9] = true; // <20> , CAPITAL LETTER U WITH GRAVE ACCENT
IsLetterTab[0xDA] = true; // <20> , CAPITAL LETTER U WITH ACUTE ACCENT
IsLetterTab[0xDB] = true; // <20> , CAPITAL LETTER U WITH CIRCUMFLEX ACCENT
IsLetterTab[0xDC] = true; // <20> , CAPITAL LETTER U WITH DIAERESIS
IsLetterTab[0xDD] = true; // <20> , CAPITAL LETTER Y WITH ACUTE ACCENT
IsLetterTab[0xDE] = true; // <20> , CAPITAL LETTER THORN
IsLetterTab[0xDF] = true; // <20> , SMALL LETTER SHARP S
IsLetterTab[0xE0] = true; // <20> , SMALL LETTER A WITH GRAVE ACCENT
IsLetterTab[0xE1] = true; // <20> , SMALL LETTER A WITH ACUTE ACCENT
IsLetterTab[0xE2] = true; // <20> , SMALL LETTER A WITH CIRCUMFLEX ACCENT
IsLetterTab[0xE3] = true; // <20> , SMALL LETTER A WITH TILDE
IsLetterTab[0xE4] = true; // <20> , SMALL LETTER A WITH DIAERESIS
IsLetterTab[0xE5] = true; // <20> , SMALL LETTER A WITH RING ABOVE
IsLetterTab[0xE6] = true; // <20> , SMALL LIGATURE AE
IsLetterTab[0xE7] = true; // <20> , SMALL LETTER C WITH CEDILLA
IsLetterTab[0xE8] = true; // <20> , SMALL LETTER E WITH GRAVE ACCENT
IsLetterTab[0xE9] = true; // <20> , SMALL LETTER E WITH ACUTE ACCENT
IsLetterTab[0xEA] = true; // <20> , SMALL LETTER E WITH CIRCUMFLEX ACCENT
IsLetterTab[0xEB] = true; // <20> , SMALL LETTER E WITH DIAERESIS
IsLetterTab[0xEC] = true; // <20> , SMALL LETTER I WITH GRAVE ACCENT
IsLetterTab[0xED] = true; // <20> , SMALL LETTER I WITH ACUTE ACCENT
IsLetterTab[0xEE] = true; // <20> , SMALL LETTER I WITH CIRCUMFLEX ACCENT
IsLetterTab[0xEF] = true; // <20> , SMALL LETTER I WITH DIAERESIS
IsLetterTab[0xF0] = true; // <20> , SMALL LETTER ETH
IsLetterTab[0xF1] = true; // <20> , SMALL LETTER N WITH TILDE
IsLetterTab[0xF2] = true; // <20> , SMALL LETTER O WITH GRAVE ACCENT
IsLetterTab[0xF3] = true; // <20> , SMALL LETTER O WITH ACUTE ACCENT
IsLetterTab[0xF4] = true; // <20> , SMALL LETTER O WITH CIRCUMFLEX ACCENT
IsLetterTab[0xF5] = true; // <20> , SMALL LETTER O WITH TILDE
IsLetterTab[0xF6] = true; // <20> , SMALL LETTER O WITH DIAERESIS
IsLetterTab[0xF8] = true; // <20> , SMALL LETTER O WITH OBLIQUE BAR
IsLetterTab[0xF9] = true; // <20> , SMALL LETTER U WITH GRAVE ACCENT
IsLetterTab[0xFA] = true; // <20> , SMALL LETTER U WITH ACUTE ACCENT
IsLetterTab[0xFB] = true; // <20> , SMALL LETTER U WITH CIRCUMFLEX ACCENT
IsLetterTab[0xFC] = true; // <20> , SMALL LETTER U WITH DIAERESIS
IsLetterTab[0xFD] = true; // <20> , SMALL LETTER Y WITH ACUTE ACCENT
IsLetterTab[0xFE] = true; // <20> , SMALL LETTER THORN
IsLetterTab[0xFF] = true; // <20> , SMALL LETTER Y WITH DIAERESIS
}