From: <bl...@us...> - 2003-04-06 16:17:23
|
Update of /cvsroot/cpptool/rfta/src/rftaparser In directory sc8-pr-cvs1:/tmp/cvs-serv7316/src/rftaparser Modified Files: VariableDeclMutator.cpp VariableDeclMutator.h VariableDeclMutatorTest.cpp Log Message: * modified variable decl child node range. It now encompass the ', ' that follow the variable declaration. Index: VariableDeclMutator.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutator.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** VariableDeclMutator.cpp 15 Mar 2003 16:57:39 -0000 1.15 --- VariableDeclMutator.cpp 6 Apr 2003 16:17:19 -0000 1.16 *************** *** 96,100 **** prefixEndIndex, // variable name start suffixStartIndex, ! suffixEndIndex ); // from now, throw parse failure if unexpected stuff happen --- 96,100 ---- prefixEndIndex, // variable name start suffixStartIndex, ! suffixEndIndex ); // position of last white space after ',' if many variable // from now, throw parse failure if unexpected stuff happen *************** *** 114,118 **** { ASTNodePtr variableDeclNode = ! createVariableDeclarationNode( declStatement, suffixEnd ); addVariableNameNode( variableDeclNode, variableNameStart, suffixStart ); --- 114,118 ---- { ASTNodePtr variableDeclNode = ! createVariableDeclarationNode( declStatement, secondaryPrefixStart, suffixEnd ); addVariableNameNode( variableDeclNode, variableNameStart, suffixStart ); *************** *** 204,224 **** bool VariableDeclMutator::parseTemplateParameterList( const char *¤t, ! const char *end) { ! const char* start = current; ! if ( !tryFindNextBalanced( current, end ) ) ! return false; ! // take care of logical operators ! for (; start < current-1; start++) ! switch(*start) ! { case '&': case '|': ! if (start[1] == start[0]) ! return false; ! break; default: ! break; ! } ! return true; }; --- 204,224 ---- bool VariableDeclMutator::parseTemplateParameterList( const char *¤t, ! const char *end) { ! const char* start = current; ! if ( !tryFindNextBalanced( current, end ) ) ! return false; ! // take care of logical operators ! for (; start < current-1; start++) ! switch(*start) ! { case '&': case '|': ! if (start[1] == start[0]) ! return false; ! break; default: ! break; ! } ! return true; }; *************** *** 380,383 **** --- 380,384 ---- { skipSpaces(); + adjustPreviousDeclarationEndIndex( getCurrentIndex() ); int secondaryPrefixStartIndex = getCurrentIndex(); const char *secondaryPrefixStart = current_; *************** *** 505,515 **** ASTNodePtr ! VariableDeclMutator::createVariableDeclarationNode(const ASTNodePtr& parent, ! int suffixEnd) const { ASTNodePtr result = createASTNode( ASTNodeTypes::variableDeclExpression, ! parent, ! getStartIndex(), ! suffixEnd - getStartIndex() ); // the correct length is set when the initializer is added. parent->addChild(result); --- 506,517 ---- ASTNodePtr ! VariableDeclMutator::createVariableDeclarationNode( const ASTNodePtr &parent, ! int secondaryPrefixStart, ! int suffixEnd ) const { ASTNodePtr result = createASTNode( ASTNodeTypes::variableDeclExpression, ! parent, ! secondaryPrefixStart, ! suffixEnd - getStartIndex() ); // the correct length is set when the initializer is added. parent->addChild(result); *************** *** 611,614 **** --- 613,625 ---- variableDeclNode->setPropertyNode( ASTNodeProperties::variableInitializerProperty, initializerNode ); + } + + + void + VariableDeclMutator::adjustPreviousDeclarationEndIndex( int separatorEndIndex ) + { + int lastVarIndex = node_->getChildCount() -1; + ASTNodePtr previousVarNode = node_->getChildAt( lastVarIndex ); + previousVarNode->setLength( separatorEndIndex - previousVarNode->getStartIndex() ); } Index: VariableDeclMutator.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutator.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** VariableDeclMutator.h 12 Dec 2002 15:18:01 -0000 1.6 --- VariableDeclMutator.h 6 Apr 2003 16:17:20 -0000 1.7 *************** *** 69,72 **** --- 69,73 ---- ASTNodePtr createVariableDeclarationNode( const ASTNodePtr& parent, + int secondaryPrefixStart, int suffixEnd) const; void addVariableNameNode( const ASTNodePtr& parent, *************** *** 87,90 **** --- 88,93 ---- const ASTNodeType initializerType, int initializerStartIndex ) const; + + void adjustPreviousDeclarationEndIndex( int separatorEndIndex ); private: Index: VariableDeclMutatorTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rftaparser/VariableDeclMutatorTest.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** VariableDeclMutatorTest.cpp 30 Dec 2002 15:01:59 -0000 1.13 --- VariableDeclMutatorTest.cpp 6 Apr 2003 16:17:20 -0000 1.14 *************** *** 354,360 **** { std::string source( " int x1( 7 )" ); - int var1EndIndex = source.length(); int var1PrefixLength = 4; source += ", "; int var2PrefixStartIndex = source.length(); source += "*"; --- 354,360 ---- { std::string source( " int x1( 7 )" ); int var1PrefixLength = 4; source += ", "; + int var1EndIndex = source.length(); int var2PrefixStartIndex = source.length(); source += "*"; *************** *** 366,369 **** --- 366,370 ---- source += "; "; int startIndex = 3; + int decl1StartIndex = startIndex + std::string("int ").length(); int length = source.length() - 2 - startIndex; *************** *** 388,393 **** // var1 ASTNodePtr declStatement1 = statement->getChildAt(0); ! RFTA_ASSERT_EQUAL( startIndex, declStatement1->getStartIndex() ); ! RFTA_ASSERT_EQUAL( var1EndIndex-startIndex, declStatement1->getLength() ); ASTNodePtr var1TypePrefix = declStatement1->getProperty( --- 389,394 ---- // var1 ASTNodePtr declStatement1 = statement->getChildAt(0); ! RFTA_ASSERT_EQUAL( decl1StartIndex, declStatement1->getStartIndex() ); ! RFTA_ASSERT_EQUAL( var1EndIndex-decl1StartIndex, declStatement1->getLength() ); ASTNodePtr var1TypePrefix = declStatement1->getProperty( *************** *** 404,409 **** // var2 ASTNodePtr declStatement2 = statement->getChildAt(1); ! RFTA_ASSERT_EQUAL( startIndex, declStatement2->getStartIndex() ); ! RFTA_ASSERT_EQUAL( var2EndIndex-startIndex, declStatement2->getLength() ); ASTNodePtr var2TypePrefix = declStatement2->getProperty( --- 405,410 ---- // var2 ASTNodePtr declStatement2 = statement->getChildAt(1); ! RFTA_ASSERT_EQUAL( var2PrefixStartIndex, declStatement2->getStartIndex() ); ! RFTA_ASSERT_EQUAL( var2EndIndex-var2PrefixStartIndex, declStatement2->getLength() ); ASTNodePtr var2TypePrefix = declStatement2->getProperty( |