示例#1
0
文件: parser.cpp 项目: copernicus/aox
uint Parser::complexIdentifier( uint j )
{
    uint k = whitespace( j );
    if ( t[k] == ':' && t[k+1] == ':' )
        k = whitespace( k + 2 );
    uint l = simpleIdentifier( k );
    if ( l == k )
        return j;
    j = whitespace( l );

    while ( t[j] == ':' && t[j+1] == ':' ) {
        if ( t.mid( j+2, 8 ) == "operator" )
            j = operatorHack( j+2 );
        else if ( t[j+2] == '~' )
            j = simpleIdentifier( j + 3 );
        else
            j = simpleIdentifier( j + 2 );
    }

    j = whitespace( j );
    if ( t[j] == '<' ) {
        k = complexIdentifier( j + 1 );
        if ( k > j + 1 && t[k] == '>' )
            j = k+1;
    }
    return j;
}
示例#2
0
文件: parser.cpp 项目: aox/aox
uint Parser::simpleIdentifier( uint j )
{
    uint k = whitespace( j );
    if ( t.mid( k, 8 ) == "operator" )
        return operatorHack( k );
    if ( ( t[k] >= 'A' && t[k] <= 'z' ) ||
         ( t[k] >= 'a' && t[k] <= 'z' ) ) {
        j = k + 1;
        while ( ( t[j] >= 'A' && t[j] <= 'z' ) ||
                ( t[j] >= 'a' && t[j] <= 'z' ) ||
                ( t[j] >= '0' && t[j] <= '9' ) ||
                ( t[j] == '_' ) )
            j++;
    }
    return j;
}