mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
Improve identifier mapping
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13546 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
4f3794de23
commit
b4e2c1e961
2 changed files with 73 additions and 16 deletions
|
@ -1,7 +1,13 @@
|
|||
2002-04-25 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Tools/AGSParser.m: Improve handling of identifier mapping so that
|
||||
an identifier mapped to an empty string (or //) an any place where
|
||||
whitespace is permissable is treated as part of that white space.
|
||||
|
||||
2002-04-25 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Tools/AGSParser.m: Interpret a mapping to '//' in the WordMap as
|
||||
meaning that the resto of the line containing the mapped value
|
||||
meaning that the rest of the line containing the mapped value
|
||||
should be ignored.
|
||||
|
||||
2002-04-24 Gregory John Casamento <greg_casamento@yahoo.com>
|
||||
|
|
|
@ -1146,15 +1146,17 @@ try:
|
|||
NSString *tmp;
|
||||
NSString *val;
|
||||
|
||||
tmp = [NSString stringWithCharacters: &buffer[start]
|
||||
length: pos - start];
|
||||
tmp = [[NSString alloc] initWithCharacters: &buffer[start]
|
||||
length: pos - start];
|
||||
val = [wordMap objectForKey: tmp];
|
||||
if (val == nil)
|
||||
{
|
||||
return tmp; // No mapping found.
|
||||
return AUTORELEASE(tmp); // No mapping found.
|
||||
}
|
||||
else if ([val length] > 0)
|
||||
RELEASE(tmp);
|
||||
if ([val length] > 0)
|
||||
{
|
||||
|
||||
if ([val isEqualToString: @"//"] == YES)
|
||||
{
|
||||
[self skipRemainderOfLine];
|
||||
|
@ -2965,25 +2967,74 @@ fail:
|
|||
*/
|
||||
- (unsigned) skipWhiteSpace
|
||||
{
|
||||
while (pos < length)
|
||||
BOOL tryAgain;
|
||||
|
||||
do
|
||||
{
|
||||
unichar c = buffer[pos];
|
||||
unsigned start;
|
||||
|
||||
if (c == '/')
|
||||
tryAgain = NO;
|
||||
while (pos < length)
|
||||
{
|
||||
unsigned old = pos;
|
||||
unichar c = buffer[pos];
|
||||
|
||||
if ([self skipComment] > old)
|
||||
if (c == '/')
|
||||
{
|
||||
continue; // Found a comment ... go on as if it was a space.
|
||||
unsigned old = pos;
|
||||
|
||||
if ([self skipComment] > old)
|
||||
{
|
||||
continue; // Found a comment ... act as if it was a space.
|
||||
}
|
||||
}
|
||||
if ([spacenl characterIsMember: c] == NO)
|
||||
{
|
||||
break; // Not whitespace ... done.
|
||||
}
|
||||
pos++; // Step past space character.
|
||||
}
|
||||
start = pos;
|
||||
if (pos < length && [identifier characterIsMember: buffer[pos]] == YES)
|
||||
{
|
||||
while (pos < length)
|
||||
{
|
||||
if ([identifier characterIsMember: buffer[pos]] == NO)
|
||||
{
|
||||
NSString *tmp;
|
||||
NSString *val;
|
||||
|
||||
tmp = [[NSString alloc] initWithCharacters: &buffer[start]
|
||||
length: pos - start];
|
||||
val = [wordMap objectForKey: tmp];
|
||||
RELEASE(tmp);
|
||||
if (val == nil)
|
||||
{
|
||||
pos = start; // No mapping found
|
||||
}
|
||||
else if ([val length] > 0)
|
||||
{
|
||||
if ([val isEqualToString: @"//"] == YES)
|
||||
{
|
||||
[self skipRemainderOfLine];
|
||||
tryAgain = YES;
|
||||
}
|
||||
else
|
||||
{
|
||||
pos = start; // Not mapped to a comment.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tryAgain = YES; // Identifier ignored.
|
||||
}
|
||||
break;
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
}
|
||||
if ([spacenl characterIsMember: c] == NO)
|
||||
{
|
||||
break; // Not whitespace ... done.
|
||||
}
|
||||
pos++; // Step past space character.
|
||||
}
|
||||
while (tryAgain == YES);
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue