From: <bl...@us...> - 2003-05-30 07:31:28
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv3286/src/pyrfta/test/rfta Modified Files: codeanalysis.py codeanalysistest.py Log Message: * added test & fixed bu in scope handling Index: codeanalysis.py =================================================================== RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** codeanalysis.py 29 May 2003 21:15:18 -0000 1.3 --- codeanalysis.py 30 May 2003 07:31:24 -0000 1.4 *************** *** 61,67 **** class Scope: - children = [] - def __init__( self, parent_scope ): self.parent_scope = parent_scope if self.parent_scope: --- 61,66 ---- class Scope: def __init__( self, parent_scope ): + self.children = [] self.parent_scope = parent_scope if self.parent_scope: *************** *** 73,77 **** def parentResolve( self, identifier ): if self.parent_scope: ! return self.parent_scope.resolve( self, identifier ) return None --- 72,76 ---- def parentResolve( self, identifier ): if self.parent_scope: ! return self.parent_scope.resolve( identifier ) return None *************** *** 82,89 **** class LocalVariableScope(Scope): - declared = {} - def __init__( self, parent_scope ): Scope.__init__( self, parent_scope ) def declare( self, variableName, declExpr ): --- 81,87 ---- class LocalVariableScope(Scope): def __init__( self, parent_scope ): Scope.__init__( self, parent_scope ) + self.declared = {} def declare( self, variableName, declExpr ): *************** *** 99,106 **** class UsingDeclScope(Scope): - imported = {} - def __init__( self, parent_scope ): Scope.__init__( self, parent_scope ) def importIdentifier( self, identifier ): --- 97,103 ---- class UsingDeclScope(Scope): def __init__( self, parent_scope ): Scope.__init__( self, parent_scope ) + self.imported = {} def importIdentifier( self, identifier ): *************** *** 113,122 **** class LocalVariableResolver: - standard_for_scope = True - scope_depth = 0 - resolved = {} - def __init__( self, function_scope ): self.current_scope = function_scope def resolveVariable( self, variableName, variable_name_element ): --- 110,118 ---- class LocalVariableResolver: def __init__( self, function_scope ): self.current_scope = function_scope + self.standard_for_scope = True + self.scope_depth = 0 + self.resolved = {} def resolveVariable( self, variableName, variable_name_element ): Index: codeanalysistest.py =================================================================== RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** codeanalysistest.py 29 May 2003 21:15:18 -0000 1.3 --- codeanalysistest.py 30 May 2003 07:31:25 -0000 1.4 *************** *** 160,167 **** self.resolver = LocalVariableResolver( FunctionScope( self.function ) ) self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] ) self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] ) self.identifiers = {} ! for name in [ "var1", "var2", "var3", "x", "y", "z" ]: ! for count in range(1,5): variable_name = name + "." + str(count) self.identifiers[ variable_name ] = self.makeVariableName( variable_name ) --- 160,171 ---- self.resolver = LocalVariableResolver( FunctionScope( self.function ) ) self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] ) + self.declExpr1b = self.makeVariableDeclExpr( [("var1", "a"), ("var2","z")] ) self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] ) + self.declExpr2b = self.makeVariableDeclExpr( [("x", "1"), ("y","b")] ) + self.declExpr3 = self.makeVariableDeclExpr( [("a", "1"), ("b","b"), ("c","c")] ) + self.declExpr3b = self.makeVariableDeclExpr( [("a", "1"), ("b","b")] ) self.identifiers = {} ! for name in [ "var1", "var2", "var3", "x", "y", "z", "a", "b", "c" ]: ! for count in range(1,10): variable_name = name + "." + str(count) self.identifiers[ variable_name ] = self.makeVariableName( variable_name ) *************** *** 187,201 **** self.assertEqual( self.resolver.current_scope.function, self.function ) ! def testDeclareAndResolve( self ): self.resolver.enterScope() self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 ) ! self.declareVariables( ["x", "y", "z"], self.declExpr1 ) ! self.resolveVariables( [ ("var1",1), ("var2",1) ] ) self.resolver.exitScope() ! self.checkVariableResolutions( ["var1.1", "var2.1"], self.declExpr1 ) def suite(): ! return unittest.makeSuite(IdentifierResolverTestCase, LocaleVariableResolverTest) if __name__ == '__main__': --- 191,226 ---- self.assertEqual( self.resolver.current_scope.function, self.function ) ! def testResolveWithNoSubScope( self ): self.resolver.enterScope() self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 ) ! self.declareVariables( ["x", "y", "z"], self.declExpr2 ) ! self.resolveVariables( [ ("var1",1), ("var2",1), ("var3",1), ("var2",2), ("var3",2), ("var3",3), ("var1",2) ] ) ! self.resolveVariables( [ ("x",1), ("y",1), ("x",2), ("z",1), ("z",2), ("y",1) ] ) self.resolver.exitScope() ! self.checkVariableResolutions( ["var1.1", "var2.1", "var1.2", "var2.2", "var3.1", "var3.2", "var3.3"], self.declExpr1 ) ! self.checkVariableResolutions( ["x.1", "x.2", "y.1", "z.1", "z.2"], self.declExpr2 ) ! ! def testResolveWithSubScope( self ): ! self.resolver.enterScope() ! self.declareVariables( ["var1","var2"], self.declExpr1 ) ! self.resolveVariables( [ ("var1",1), ("var1",2), ("var2",1) ] ) ! self.resolver.enterScope() ! self.declareVariables( ["var1"], self.declExpr1b ) ! self.resolver.enterScope() ! self.resolveVariables( [ ("var1",3), ("var2",2), ("var2",3) ] ) ! self.resolver.exitScope() ! self.resolveVariables( [ ("var1",4), ("var2",4) ] ) ! self.resolver.exitScope() ! self.resolveVariables( [ ("var1",5), ("var2",5) ] ) ! self.resolver.exitScope() ! ! self.checkVariableResolutions( ["var1.1", "var1.2", "var1.5", ! "var2.1", "var2.2", "var2.3", "var2.4", "var2.5"], self.declExpr1 ) ! self.checkVariableResolutions( ["var1.3", "var1.4"], self.declExpr1b ) ! def suite(): ! return unittest.makeSuite(LocaleVariableResolverTest) if __name__ == '__main__': |