|
From: <net...@us...> - 2003-09-07 13:29:42
|
Update of /cvsroot/cpptool/rfta/src/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv28972/rfta/src/rfta
Modified Files:
IdentifierResolverContext.h IdentifierResolverContext.cpp
Log Message:
-- does use now identifierscope class for complete identifier resolving
Index: IdentifierResolverContext.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/IdentifierResolverContext.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** IdentifierResolverContext.h 6 Sep 2003 21:52:46 -0000 1.6
--- IdentifierResolverContext.h 7 Sep 2003 13:29:39 -0000 1.7
***************
*** 70,80 ****
std::string getIdentifierName( const ASTNodePtr &identifierNode ) const;
- typedef std::deque<ASTNodePtr> LocalVariables;
- typedef std::deque<LocalVariables> ScopeLocalVariables;
- ScopeLocalVariables scopeLocalVariables_;
-
- typedef std::map<std::string, LocalVariables> VisibleLocalVariables;
- VisibleLocalVariables visibleLocalVariables_;
-
typedef std::map<ASTNodePtr,ASTNodePtr> ResolvedUnqualifiedIdentifiers;
ResolvedUnqualifiedIdentifiers resolvedIdentifiers_;
--- 70,73 ----
Index: IdentifierResolverContext.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/IdentifierResolverContext.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** IdentifierResolverContext.cpp 6 Sep 2003 21:52:46 -0000 1.9
--- IdentifierResolverContext.cpp 7 Sep 2003 13:29:39 -0000 1.10
***************
*** 15,19 ****
IdentifierResolverContext::IdentifierResolverContext()
{
! identifierRootScope_ = IdentifierScope::createScope(IdentifierScopeWeakPtr());
identifierCurrentScope_ = identifierRootScope_;
}
--- 15,19 ----
IdentifierResolverContext::IdentifierResolverContext()
{
! identifierRootScope_ = IdentifierScope::createScope(IdentifierScopeWeakPtr(), "ROOT");
identifierCurrentScope_ = identifierRootScope_;
}
***************
*** 31,35 ****
--- 31,38 ----
IdentifierResolverContext::enterUnnamedSubScope()
{
+ identifierCurrentScope_ = IdentifierScope::createSubScope(identifierCurrentScope_,"");
+ /*
scopeLocalVariables_.push_back( LocalVariables() );
+ */
}
***************
*** 38,66 ****
IdentifierResolverContext::leaveUnnamedSubScope()
{
! if ( scopeLocalVariables_.empty() )
! throw std::logic_error( "IdentifierResolverContext::leaveUnnamedSubScope(): "
! "no matching enterUnnamedSubScope()." );
!
! LocalVariables &variables = scopeLocalVariables_.back();
! LocalVariables::iterator it = variables.begin();
! LocalVariables::iterator itEnd = variables.end();
! while ( it != itEnd )
! {
! const ASTNodePtr &node = *it++;
! VisibleLocalVariables::iterator itName =
! visibleLocalVariables_.find( getLocalVariableName(node) );
! if ( itName == visibleLocalVariables_.end() )
! {
! throw std::logic_error( "IdentifierResolverContext::leaveUnnamedSubScope(): "
! "inconsitent state, variable declared but not in visible variable list." );
! }
!
! if ( itName->second.size() == 1 )
! visibleLocalVariables_.erase( itName );
! else
! itName->second.pop_front();
! }
- scopeLocalVariables_.pop_back();
}
--- 41,48 ----
IdentifierResolverContext::leaveUnnamedSubScope()
{
! IdentifierScopePtr next = boost::make_shared( identifierCurrentScope_->getParentScope() );
! next->removeSubScope( identifierCurrentScope_ );
! identifierCurrentScope_ = next;
}
***************
*** 71,81 ****
{
const std::string name = getLocalVariableName( localVariableDeclNode );
! visibleLocalVariables_[ name ].push_front( localVariableDeclNode );
!
! LocalVariables &variables = scopeLocalVariables_.back();
! variables.push_back( localVariableDeclNode );
ASTNodePtr variableNameNode = getLocalVariableNameNode( localVariableDeclNode );
! resolvedIdentifiers_[ variableNameNode ] = localVariableDeclNode;
}
--- 53,60 ----
{
const std::string name = getLocalVariableName( localVariableDeclNode );
! identifierCurrentScope_->addIdentifierDeclaration(name, localVariableDeclNode);
ASTNodePtr variableNameNode = getLocalVariableNameNode( localVariableDeclNode );
! resolvedIdentifiers_[ variableNameNode ] = localVariableDeclNode;
}
***************
*** 87,103 ****
const std::string name = getIdentifierName( identifierNode );
! VisibleLocalVariables::iterator it = visibleLocalVariables_.find( name );
! if ( it == visibleLocalVariables_.end() )
! return;
!
! if ( it->second.empty() )
{
! throw std::logic_error( "IdentifierResolverContext::resolveUnqualifiedIdentifier( " +
! identifierNode->getBlankedText() + "): variable found in "
! "list of visible variable, but no declaration found!" );
}
!
! const ASTNodePtr &localVariableDeclNode = it->second.front();
! resolvedIdentifiers_[ identifierNode ] = localVariableDeclNode;
}
--- 66,75 ----
const std::string name = getIdentifierName( identifierNode );
! ASTNodePtr declNode = identifierCurrentScope_->getIdentifierDeclaration(name);
! if (!declNode) // no declaration found ...
{
! return;
}
! resolvedIdentifiers_[ identifierNode ] = declNode;
}
|