Handling C++-style comments in Liberty parser.

This commit is contained in:
Alan Mishchenko 2014-01-28 17:45:44 +08:00
parent e49e123bb7
commit d9bbcb5dc9
1 changed files with 26 additions and 0 deletions

View File

@ -173,6 +173,7 @@ int Scl_LibertyCountItems( char * pBeg, char * pEnd )
return Counter;
}
// removes C-style comments
/*
void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd )
{
char * pCur, * pStart;
@ -186,6 +187,31 @@ void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd )
break;
}
}
*/
void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd )
{
char * pCur, * pStart;
for ( pCur = pBeg; pCur < pEnd-1; pCur++ )
if ( pCur[0] == '/' && pCur[1] == '*' )
{
for ( pStart = pCur; pCur < pEnd-1; pCur++ )
if ( pCur[0] == '*' && pCur[1] == '/' )
{
for ( ; pStart < pCur + 2; pStart++ )
if ( *pStart != '\n' ) *pStart = ' ';
break;
}
}
else if ( pCur[0] == '/' && pCur[1] == '/' )
{
for ( pStart = pCur; pCur < pEnd; pCur++ )
if ( pCur[0] == '\n' || pCur == pEnd-1 )
{
for ( ; pStart < pCur; pStart++ ) *pStart = ' ';
break;
}
}
}
static inline int Scl_LibertyCharIsSpace( char c )
{
return c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\\';