You are viewing a plain text version of this content. The canonical link for it is here.
Posted to imperius-commits@incubator.apache.org by jn...@apache.org on 2007/12/22 19:34:03 UTC

svn commit: r606479 [9/30] - in /incubator/imperius/trunk/trunk: ./ modules/ modules/imperius-javaspl/ modules/imperius-javaspl/resources/ modules/imperius-javaspl/resources/samples/ modules/imperius-javaspl/resources/samples/computersystem/ modules/im...

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimspl.tree.g
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimspl.tree.g?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimspl.tree.g (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimspl.tree.g Sat Dec 22 11:33:46 2007
@@ -0,0 +1,1455 @@
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// * @author Neeraj Joshi <jn...@us.ibm.com>
+ 
+ 
+  header {
+  	/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+	/**
+	 * @author Neeraj Joshi <jn...@us.ibm.com>
+	 *
+	 */
+  package org.apache.imperius.spl.parser.compiler;
+ 
+  }
+
+
+
+options {
+    language=Java;
+}
+{
+import java.util.*;
+import java.io.*;
+import org.apache.imperius.spl.parser.statements.impl.*;
+import org.apache.imperius.spl.parser.statements.*;
+import org.apache.imperius.spl.parser.statements.impl.*;
+import org.apache.imperius.spl.parser.factory.*;
+import org.apache.imperius.spl.parser.expressions.*;
+import org.apache.imperius.spl.parser.expressions.impl.*;
+import org.apache.imperius.spl.parser.util.*;
+import org.apache.imperius.spl.parser.compiler.IdentPrimaryTuple;
+import org.apache.imperius.spl.parser.compiler.symboltable.*;
+import org.apache.imperius.spl.parser.statements.PolicyStatement;
+import org.apache.imperius.spl.parser.exceptions.*;
+import org.apache.imperius.spl.external.*;
+import org.apache.imperius.util.SPLLogger;
+import org.apache.imperius.spl.parser.expression.primary.*;
+import org.apache.imperius.spl.parser.exceptions.*;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+
+
+
+
+
+}
+
+class SPLTreeParser extends TreeParser;
+
+options {
+    importVocab=cimspl;
+     ASTLabelType="org.apache.imperius.spl.parser.compiler.ASTWithLineNumber";
+    genHashLines = true;        // include line number information
+    
+
+
+}
+
+
+{
+SPLSymbolTable globalSymbolTable = new SPLSymbolTable();
+private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    
+SPLSymbolTable currSymbolTable = globalSymbolTable;
+String currAnchor = "";
+DataCollector dataCollector = null;
+
+//ExpressionFactory expressionFactory = new ExpressionFactory();
+}
+
+splpolicy[DataCollector dc, SPLSymbolTable currentSymTab] returns [SPLPolicy cp = null]
+{
+		dataCollector = dc;
+        SPLSymbolTable symTab = new SPLSymbolTable(currentSymTab,SPLSymbolTable.POLICYGROUP);
+        symTab.setDataCollector(dataCollector);
+        
+        currSymbolTable = symTab;
+        List importStatementList  = new ArrayList();
+        ImportStatement i = null;
+        PolicyStatement p = null;
+        ArrayList pStmtList = new ArrayList();
+        DeclarationStatement d = null;
+        StrategyStatement s = null;
+		
+}
+:
+        (i=importstatement[symTab]{importStatementList.add(i);})+ s=strategystatement (d=declarationstatement[symTab])? (p=policystatement[symTab] {pStmtList.add(p);} )+
+        { 
+                cp = new SPLPolicy(importStatementList,s,d,pStmtList,symTab);
+                if(logger.isLoggable(Level.FINE))
+                	logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: SPLPolicy Created");
+            
+          
+        }
+        ;  
+//i:"Import"^ {#i.setType(IMPORT_DEF);} IDENT (DOT! IDENT)* (identList)? (expression)? SEMI! 
+importstatement[SPLSymbolTable symTab] returns [ImportStatement i = null]
+{
+   Expression e = null;
+   String qual = null;
+   StringBuffer className = new StringBuffer();
+   List instanceInfoList = new ArrayList();
+
+}
+: //(03-04-2007) PB: set namespace before set anchor as datacollector needs it in order to populate anchor elements
+  #(IMPORT_DEF (qual = qualifier)? i1:IDENT {className.append(i1.getText());}(i2:IDENT {className.append("." + i2.getText());})*
+  		(instanceInfoList = identList)? 
+  	{ 
+	  	try
+	  	{
+	  		//System.out.println("class name, qual = "+className.toString()+" , "+qual);
+	  		symTab.addAnchor(className.toString(), qual, instanceInfoList);
+	  	}	
+	  	catch (SPLException exep)
+	  	{ 
+	  			ASTWithLineNumber q = (ASTWithLineNumber)i1;
+	  			//System.out.println(exep.getMessage() + "at line" + q.getLine()); 
+	  			
+	  	}
+  	}
+  	(e=expression[symTab])?)
+  	{
+//  currSymbolTable.setAnchor(i4.getText());
+	  i = new ImportStatement(instanceInfoList,e,symTab); 
+	  //if(logger.isLoggable(Level.FINE))
+	  //logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: ImportStatement Created");
+            
+  
+  	}
+                  
+
+; 
+
+qualifier returns [String qualifier = null]
+:
+#(QUALIFIER c:IDENT { qualifier = c.getText(); } )
+;	
+
+identList returns [List instanceInfoList = null] 
+{
+   InstanceInfo ii = null;	
+   instanceInfoList = new ArrayList();
+}	
+:
+#(COLON cl:IDENT { ii = new InstanceInfo(cl.getText(),new Object());instanceInfoList.add(ii);} 
+  		(c2:IDENT { ii = new InstanceInfo(c2.getText(), new Object()); instanceInfoList.add(ii);} )*)
+  		
+  		;
+
+strategystatement returns [StrategyStatement s = null] :
+                #(STRATEGY_DEF (
+                "Execute_All_Applicable" 
+                {
+                   	s = new StrategyStatement("Execute_All_Applicable");
+                   	if(logger.isLoggable(Level.FINE))
+  				   		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: StrategyStatement Created");
+   
+                }
+                | 
+                "Execute_First_Applicable"
+                 {
+                   	s = new StrategyStatement("Execute_First_Applicable");
+                   	if(logger.isLoggable(Level.FINE))
+  				   		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: StrategyStatement Created");
+   
+                 }
+                
+                ))
+                
+                        
+;  
+
+declarationstatement[SPLSymbolTable symTab] returns [DeclarationStatement d = null] 
+{
+        ArrayList cList = new ArrayList();
+        ArrayList mList = new ArrayList();
+        MacroDefinition m = null;
+        ConstantDefinition c = null;
+}
+
+:     
+                #(DECL_DEF ((c = constantDefinitions[symTab] {cList.add(c);} ) | (m=macroDeclarations[symTab] {mList.add(m);} ))* )
+                {
+                        d = new DeclarationStatement(cList,mList,symTab);
+                        if(logger.isLoggable(Level.FINE))
+  				   			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: DeclarationStatement Created");
+   
+                }
+
+        ; 
+
+constantDefinitions[SPLSymbolTable symTab]  returns [ConstantDefinition cd = null ]
+{
+        Expression v = null;
+}
+:
+                 #(t:CONSTANT_DEFN id:IDENT v=varInitializer[symTab])
+                  {
+                 	//currSymbolTable.insertVariableSymbol(id.getText(),null,null);
+                 	try
+                 	{
+                 		//System.out.println("id.getText() "+id.getText() +" v.getType() "+v.getType()+ " v "+v.toString() );
+                 		
+                 		symTab.insertVariableSymbol(id.getText(),v.getType(),false,false); 
+                  		cd = new ConstantDefinition(id.getText(),v,symTab);
+                  		if(logger.isLoggable(Level.FINE))
+  				   			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: ConstantDefinition Created "+id.getText());
+   
+                 	}
+                 	catch(SPLException excep)
+					{
+						ASTWithLineNumber q = (ASTWithLineNumber)t;
+						logger.severe(excep.getMessage());
+						logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception inserting symbol "+id.getText() +" at line "+q.getLine());
+						//System.out.println(excep.getMessage());
+						//System.out.println("TreeParser::Exception inserting symbol "+id.getText() +" at line "+q.getLine());
+						System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+						throw new RecognitionException(excep.getMessage());
+					}
+                  
+                  } 
+	                      
+;
+
+varInitializer[SPLSymbolTable symTab] returns [Expression v = null]
+{
+	
+}
+
+  :
+                #(ASSIGN v=expression[symTab])
+{
+		
+}	                
+                
+        ;
+
+
+macroDeclarations[SPLSymbolTable symTab] returns [MacroDefinition m = null]:
+                #(MACRO_DEFN m=macrodef[symTab])
+      ;
+macrodef[SPLSymbolTable symTab] returns [MacroDefinition m = null] 
+{
+        ArrayList a=new ArrayList();
+        Expression e = null;
+        String arr = "";
+		String typestr="";
+		boolean isArr=false;
+        SPLSymbolTable macroSymTab = new SPLSymbolTable(symTab,2);
+        
+        macroSymTab.setSymbolTableType(SPLSymbolTable.MACRO);
+        symTab.addChildSymbolTable(macroSymTab);
+        
+                
+}
+:
+                #("Name" id:IDENT arr=splType  a=argumentList[macroSymTab] e=expression[macroSymTab])
+                {
+                       // currSymbolTable.insertMethodSymbol(id.getText(),c.getText(),a);
+                  //System.out.println("treeparser c= "+c.getText());
+                  if(logger.isLoggable(Level.FINE))
+  				   		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: MacroDefinition type "+arr);
+   
+                  if(arr!=null)
+                	{
+	                	if(arr.indexOf("[") != -1)
+	                	{
+	                		typestr=arr.substring(0,arr.indexOf("["));
+	                		if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: MacroDefinition typestr "+typestr);
+	                		isArr=true;
+	                		if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: macro isArray = "+isArr);
+   
+	                	}
+	                	else
+	                	{
+	                		typestr=arr;
+	                	}
+                	}
+                	else
+                	{
+                		logger.severe(Thread.currentThread().getName()+" "+" arr string is null in macrodef ");
+                	}
+                	
+                  //int type = TypeConstants.getActualType(typestr);
+                  
+                  	
+                  
+                  	
+                  	
+                  
+                  try
+                  {
+                  	m = new MacroDefinition(id.getText(),typestr,isArr,a,e,macroSymTab,symTab); 
+                  	//System.out.println("MacroDefinition : "+id.getText()+" "+typestr);
+                  	
+                    if(logger.isLoggable(Level.FINE))
+  				   		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: MacroDefinition Created "+id.getText());
+   
+                  	symTab.insertMacroSymbol(id.getText(),typestr,isArr,a,m);
+                  	//System.out.println("inserted MacroSymbol into Symbol Table : "+id.getText());
+                  	if(logger.isLoggable(Level.FINE))
+  				   		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: MacroDefinition inserted into SymbolTable "+id.getText());
+   
+                  }
+                  catch(SPLException excep)
+                  {
+                  		ASTWithLineNumber q = (ASTWithLineNumber)id;
+						logger.severe(excep.getMessage());
+						logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception inserting symbol "+id.getText() +" at line "+q.getLine());
+						//System.out.println(excep.getMessage());
+						//System.out.println("TreeParser::Exception inserting symbol "+id.getText() +" at line "+q.getLine());
+						System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+						throw new RecognitionException(excep.getMessage());
+						
+                  }		
+                 
+                  
+                }
+       ; 
+argumentList[SPLSymbolTable symTab]  returns [ArrayList argTypes=new ArrayList()] 
+{ Argument at = null;
+}
+ :
+                #(ARGUMENTS (at=argument[symTab] {argTypes.add(at);})* )
+       ;
+
+argument[SPLSymbolTable symTab] returns [Argument tp = null]
+{ 
+	String arr = "";
+	String typestr="";
+	boolean isArr=false;
+}
+ :
+                #(ARG_DEF #(TYPE arr=splType ) i:IDENT )
+                {
+                	if(logger.isLoggable(Level.FINE))
+  				   			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: macro arr = "+arr);
+   
+                	if(arr!=null)
+                	{
+	                	if(arr.indexOf("[") != -1)
+	                	{
+	                		typestr=arr.substring(0,arr.indexOf("["));
+	                		if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: MacroDefinition typestr "+typestr);
+	                		isArr=true;
+	                		if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: macro isArray = "+isArr);
+   
+	                	}	
+	                	else
+	                	{
+	                		typestr=arr;
+	                	}
+                	}
+                	else
+                	{
+                		logger.severe(Thread.currentThread().getName()+" "+" arr string is null in argument ");
+                	}
+                		
+                		
+                		try
+                		{
+                			int type = TypeConstants.getActualType(typestr);
+	                		
+                	    	symTab.insertVariableSymbol(i.getText(),type,null,isArr,false,false);
+                	    	if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: Variable inserted into SymbolTable "+i.getText());
+   
+                        	tp = new ArgumentImpl(typestr,i.getText(),isArr,null); 
+                        	if(logger.isLoggable(Level.FINE))
+  				   				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: Argument created");
+   
+                		}
+                		catch(SPLException excep)
+                		{
+                			ASTWithLineNumber q = (ASTWithLineNumber)i;
+							logger.severe(excep.getMessage());
+							logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception inserting symbol "+i.getText() +" at line "+q.getLine());
+							//System.out.println(excep.getMessage());
+							//System.out.println("TreeParser::Exception inserting symbol "+i.getText() +" at line "+q.getLine());
+							System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+							throw new RecognitionException(excep.getMessage());
+                		}		
+                }
+           
+;
+
+
+policystatement[SPLSymbolTable symTab] returns [PolicyStatement p = null]
+:
+                ( p = policydef[symTab] | p =  policyGroup[symTab] )
+        
+;
+
+
+policydef[SPLSymbolTable symTab]  returns [PolicyDefinition pd = null]
+     { 
+        SPLSymbolTable lclSymTab = new SPLSymbolTable(symTab);
+        symTab.addChildSymbolTable(lclSymTab);
+     //   currSymbolTable = symTab;
+        DeclarationStatement d = null;
+        Expression exp = null;
+        ActionBlock dec = null;
+        
+     }   
+: 
+        #(POLICY_DEF (d = declarationstatement[lclSymTab])? (exp = conditionstatement[lclSymTab])? dec = decision[lclSymTab] p:priority) 
+        {   
+               // currSymbolTable = currSymbolTable.getParentSymbolTable(); 
+                pd = new PolicyDefinition(d,exp,dec,p.getText(),lclSymTab);
+                if(logger.isLoggable(Level.FINE))
+  				   logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: PolicyDefinition Created");
+   
+        
+        
+        } 
+
+      
+;
+
+conditionstatement[SPLSymbolTable symTab] returns [Expression exp = null]:
+        #(CONDITION_DEF exp=expression[symTab])
+        {/*//System.out.println("cimspl.tree.g condition statement "+exp);*/}
+    
+;
+decision[SPLSymbolTable symTab] returns [ActionBlock ab=null]:
+
+        #(DECISION_DEF ab=actionBlock[symTab])
+    
+;
+
+priority :
+        NUM_INT
+; 
+expression[SPLSymbolTable symTab] returns [Expression exp=null]:
+        #(EXPR exp=expr[symTab])
+     
+;
+
+expr[SPLSymbolTable symTab] returns [Expression e=null] 
+{
+        Expression e1=null;
+        Expression e2=null;
+
+}
+
+:
+		#(t:ASSIGN e1=expr[symTab] e2=expr[symTab])
+        { 
+        	try 
+        	{ 
+        		e = ExpressionFactory.createExpression(e1,e2,ASSIGN,symTab); 
+        		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+        	}
+        	catch (SPLException excep) 
+        	{
+        		ASTWithLineNumber q = (ASTWithLineNumber)t;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());
+        	}
+        }
+        |#(t1:LOR e1=expr[symTab] e2=expr[symTab]) 
+	    { 
+	    	try 
+	    	{ 
+	    		e = ExpressionFactory.createExpression(e1,e2,LOR,symTab);
+	    		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	    	}
+	    	catch (SPLException excep) 
+	    	{
+	    		ASTWithLineNumber q = (ASTWithLineNumber)t1;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				//throw new RecognitionException(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());
+			}
+	   }
+       | #(t2:LAND e1=expr[symTab] e2=expr[symTab]) 
+        { 
+        	try 
+        	{
+        		e = ExpressionFactory.createExpression(e1,e2,LAND,symTab);
+        		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+        	}
+        	catch (SPLException excep) 
+        	{
+        		ASTWithLineNumber q = (ASTWithLineNumber)t2;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				//throw new RecognitionException(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+        	}
+       }
+       |#(t3:BXOR e1=expr[symTab] e2=expr[symTab]) 
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,BXOR,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t3;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t4:NOT_EQUAL e1=expr[symTab] e2=expr[symTab])
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,NOT_EQUAL,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t4;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t5:EQUAL e1=expr[symTab] e2=expr[symTab]) 
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,EQUAL,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       		
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t5;
+	       		//System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+			}
+       }
+       |#(t6:LT e1=expr[symTab] e2=expr[symTab])
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,LT,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       		
+			}
+			catch (SPLException excep) 
+			{
+				ASTWithLineNumber q = (ASTWithLineNumber)t6;
+				//System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());				
+			}
+	   }
+       |#(t7:GT e1=expr[symTab] e2=expr[symTab]) 
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,GT,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t7;
+	       		//System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());				
+	       	}
+       }
+       |#(t8:LE e1=expr[symTab] e2=expr[symTab])  
+       {
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,LE,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t8;
+	       		//System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t9:GE e1=expr[symTab] e2=expr[symTab])   
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,GE,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t9;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t10:PLUS e1=expr[symTab] e2=expr[symTab])  
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,PLUS,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	} 
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t10;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t11:MINUS e1=expr[symTab] e2=expr[symTab]) 
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,MINUS,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t11;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t12:DIV e1=expr[symTab] e2=expr[symTab])   
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,DIV,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	} 
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t12;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t13:STAR e1=expr[symTab] e2=expr[symTab])  
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,e2,STAR,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t13;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t14:UNARY_MINUS e1=expr[symTab]) 
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,UNARY_MINUS,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	} 
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t14;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				//throw new RecognitionException("");
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |#(t15:UNARY_PLUS e1=expr[symTab])   
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,UNARY_PLUS,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t15;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());				
+	       	}
+       }
+       |#(t16:UNARY_NOT e1=expr[symTab])
+       { 
+	       	try 
+	       	{
+	       		e = ExpressionFactory.createExpression(e1,UNARY_NOT,symTab);
+	       		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	       	}
+	       	catch (SPLException excep) 
+	       	{
+	       		ASTWithLineNumber q = (ASTWithLineNumber)t16;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());			
+	       	}
+       }
+       |e=primaryExpression[symTab] 
+       {
+       	
+       } 
+ ;  
+  
+       
+primaryExpression[SPLSymbolTable symTab] returns [Expression e = null]
+        : 
+            
+           
+           t:"true"  
+          { 
+	          	try 
+	          	{ 
+	          		e = ExpressionFactory.createExpression(t.getText(),TypeConstants.booleanType);
+	          		if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	          	}
+	          	catch (SPLException excep) 
+	          	{
+	          		ASTWithLineNumber q = (ASTWithLineNumber)t;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+					System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());				
+	          	}
+          }
+          | f:"false" 
+          { 
+	          	try 
+	          	{
+	          		e = ExpressionFactory.createExpression(f.getText(),TypeConstants.booleanType);
+	          		if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   
+	          	}catch (SPLException excep) 
+	          	{
+	          		ASTWithLineNumber q = (ASTWithLineNumber)f;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+					System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());				
+	          	}
+          }
+          | s:"Self"  
+          { 
+          	try 
+	          	{
+          		//System.out.println("Self expression");
+          		e = ExpressionFactory.createSelfExpression(symTab);
+          		if(logger.isLoggable(Level.FINE))
+  					logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+e.toString());
+   				}catch (SPLException excep) 
+	          	{
+	          		ASTWithLineNumber q = (ASTWithLineNumber)s;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+					System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());				
+	          	}
+          }
+	      | e = constant 
+	      {
+	      	
+	      }
+          | e = identPrimary[symTab]  
+          { 
+          	//System.out.println("identPrimary");
+          }
+                    ; 
+          
+identPrimary[SPLSymbolTable symTab] returns [Expression e=null]
+{
+    Expression arrexp = null;
+    List paramList = new ArrayList();
+    String secondId = "";
+    boolean isMethod = false;
+    boolean isBuiltInMethod = false;
+    List identTupleList = new ArrayList();
+    IdentPrimaryTuple tp = null;
+    SPLSymbolTable sTab = symTab;
+}
+
+:
+          e = collectExpr[symTab]
+        |
+         #( i1:IDENT
+         	 (
+	         	#(m2:METHOD_CALL 
+         		 	(paramList = exprList[symTab])?
+         		  )
+         		|  
+         		(
+         		   
+         		  i2:IDENT { secondId = i2.getText(); } 
+         	  	   ( 
+         		      arrexp=arrayIndex[symTab]  
+         			   | 
+         			  #( m:METHOD_CALL  
+         				(paramList = exprList[symTab])?  
+         			   ) 
+         			)?  
+         			{ 
+         				if(m != null)
+         					isMethod = true;
+         				sTab = new SPLSymbolTable();
+         				tp = new IdentPrimaryTuple(arrexp, paramList, secondId, isMethod,sTab);
+         				identTupleList.add(tp);
+         				
+  
+         			    
+         			}
+         		)*
+         	)	
+         		 
+          )       
+         {
+            if(m2!=null)
+            {
+                isBuiltInMethod = true;
+               //System.out.println("is isBuiltInMethod=true");
+            }
+            // do the symbol validation here
+            try
+            {
+            	if(!isBuiltInMethod)
+            	{
+            		e = ExpressionFactory.createExpression(i1.getText(),identTupleList,isBuiltInMethod,symTab);
+	            	if(logger.isLoggable(Level.FINE))
+	            	{
+  						logger.fine(Thread.currentThread().getName()+
+  							" CIMSPLTreeParser:: expression created "+e.toString());
+	            	}		
+            	}
+            	else
+            	{
+            		e = ExpressionFactory.createExpression(i1.getText(),paramList,isBuiltInMethod,symTab);
+            		if(logger.isLoggable(Level.FINE))
+            		{
+  						logger.fine(Thread.currentThread().getName()+
+  							" CIMSPLTreeParser:: expression created "+e.toString());
+            		}		
+            	}			
+   
+            }
+            catch(SPLException excep)
+            {
+            	ASTWithLineNumber q = (ASTWithLineNumber)i1;
+				logger.severe(excep.getMessage());
+				logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+				//System.out.println(excep.getMessage());
+				//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+				System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+				throw new RecognitionException(excep.getMessage());				
+            }
+              
+            		
+         } 
+        |  e = basicCollectExpr[symTab]
+         
+        ;
+
+collectExpr[SPLSymbolTable symTab]  returns [Expression expr=null]
+{
+  ArrayList paramList = new ArrayList();
+  Expression arrExp = null;
+  Expression postExpr = null;
+  SPLSymbolTable collectSymbolTable = new SPLSymbolTable();
+  collectSymbolTable.setSymbolTableType(SPLSymbolTable.COLLECT);
+  collectSymbolTable.setParentSymbolTable(symTab) ;
+  collectSymbolTable.setDefaultQualifier(symTab.getDefaultQualifier());
+  
+
+}  
+        :
+       #(c:COLLECT_OP #(COLLECT_CALL paramList = exprList[collectSymbolTable]) (postExpr = methodPropArrForCollect[symTab,collectSymbolTable])?  )
+{
+	try
+	{
+		//System.out.println("createCollectExpression"); 
+        expr = ExpressionFactory.createCollectExpression(paramList,postExpr,collectSymbolTable);
+        if(logger.isLoggable(Level.FINE))
+  			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+expr.toString());
+   
+	}
+	catch (SPLException excep)  
+	{
+            ASTWithLineNumber q = (ASTWithLineNumber)c;
+			logger.severe(excep.getMessage()); 
+			logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+			//System.out.println(excep.getMessage());
+			//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+			throw new RecognitionException(excep.getMessage());			
+	}	    
+}   
+;
+
+methodPropArrForCollect[SPLSymbolTable symTab, SPLSymbolTable cSymTab] returns [Expression exp = null] 
+{
+   Expression arrExp1 = null;
+   Expression arrExp2 = null;
+   ArrayList pList = null;
+   String ident = "";
+}
+        :
+        (arrExp1 = arrayIndex[symTab] ( id:IDENT {ident = id.getText();}( #(INDEX_OP arrExp2=expression[symTab]) | #(METHOD_CALL (pList = exprList[symTab])? )  )? )? )
+         
+{
+	try
+	{
+        exp = ExpressionFactory.createPostCollectExpression(arrExp1, ident,arrExp2 ,pList,cSymTab);
+        if(logger.isLoggable(Level.FINE))
+  			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+exp.toString());
+   }
+	catch (SPLException excep)  
+	{
+            ASTWithLineNumber q = (ASTWithLineNumber)id; 
+			logger.severe(excep.getMessage()); 
+			logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+			//System.out.println(excep.getMessage());
+			//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+			throw new RecognitionException(excep.getMessage());			
+	}	 
+}
+          
+         ;           
+
+
+
+basicCollectExpr[SPLSymbolTable symTab]  returns [Expression expr=null]
+{
+  ArrayList paramList = new ArrayList();
+  Expression arrExp = null;
+  Expression postExpr = null;
+  SPLSymbolTable collectSymbolTable = new SPLSymbolTable();
+  collectSymbolTable.setSymbolTableType(SPLSymbolTable.BASICCOLLECT);
+  collectSymbolTable.setParentSymbolTable(symTab) ;
+  collectSymbolTable.setDefaultQualifier(symTab.getDefaultQualifier());
+  
+  //symTab.addChildSymbolTable(collectSymbolTable);
+  
+
+}  
+        :
+       #(c:BASICCOLLECTION_OP paramList = exprList[collectSymbolTable]  )
+{
+	try
+	{
+		//System.out.println("calling Expression factory to create Basic Collection Expression");
+        expr = ExpressionFactory.createBasicCollectExpression(paramList,collectSymbolTable);
+		if(expr!=null){
+			if(logger.isLoggable(Level.FINE))
+  				logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+expr.toString());
+   
+		}
+		else{
+			logger.severe(Thread.currentThread().getName()+" "+"Basic collection expression not created by expression factory");
+		 	throw new SPLException("Basic collection expression not created by expression factory");
+		}
+		
+	}
+	catch (SPLException excep)  
+	{
+		ASTWithLineNumber q = (ASTWithLineNumber)c;
+		logger.severe(excep.getMessage());
+		logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+		//System.out.println(excep.getMessage());
+		//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+		System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+		throw new RecognitionException(excep.getMessage());	
+	}	    
+}   
+;
+   //
+//collectmethodcall[SPLSymbolTable symTab, SPLSymbolTable cSymTab] returns [ArrayList pList = null]
+//{
+  //      pList = new ArrayList();
+   //     Expression e= null;
+//}
+//:
+ //e=expression[symTab] {pList.add(e);} e=expression[symTab] {pList.add(e);}  e=expression[symTab] {pList.add(e);} e=expression[symTab] {pList.add(e);} e=expression[symTab] { cSymTab.setAnchorObject(s.getText());} ( e=expression[cSymTab] {pList.add(e);})? e=expression[cSymTab] {pList.add(e);} 
+ 
+//;
+
+         
+        
+
+exprList[SPLSymbolTable symTab] returns [ArrayList eList = new ArrayList()]
+{
+   Expression e = null;
+}
+	:	#( ELIST (e = expression[symTab] {eList.add(e);/*//System.out.println("exprlist: created expression, added it to eList"+e);*/} )* )
+	;
+       
+ arrayIndex[SPLSymbolTable symTab] returns [Expression e = null]
+	:	#(INDEX_OP e=expression[symTab] )
+	; 
+
+
+constant returns [Expression ce = null]:  
+			  
+       		ni:NUM_INT  
+			{ 
+				try 
+				{
+					ce = ExpressionFactory.createExpression(ni.getText(),TypeConstants.intType);
+					if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+				}
+				catch (SPLException excep) 
+				{
+					ASTWithLineNumber q = (ASTWithLineNumber)ni;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+					System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());	
+				}
+			}
+        |   cl:CHAR_LITERAL  
+        	{ 
+        		try 
+        		{
+        			ce = ExpressionFactory.createExpression(cl.getText(),TypeConstants.charType);
+        			if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+        		}
+        		catch (SPLException excep) 
+        		{
+        			ASTWithLineNumber q = (ASTWithLineNumber)cl;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+        			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());
+        		}
+        	}
+        |   sl:STRING_LITERAL 
+        	{ 
+        		try 
+        		{
+        			ce = ExpressionFactory.createExpression(sl.getText(),TypeConstants.stringType);
+        			if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+        		}catch (SPLException excep) 
+        		{
+        			ASTWithLineNumber q = (ASTWithLineNumber)sl;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+        			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());
+        		}
+        	}
+        |   nf:NUM_FLOAT 
+        	{ 
+        		try 
+        		{
+        			ce = ExpressionFactory.createExpression(nf.getText(),TypeConstants.floatType);
+        			if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+        		}
+        		catch (SPLException excep) 
+        		{
+        			ASTWithLineNumber q = (ASTWithLineNumber)nf;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+        			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());
+        		}
+        	}
+        |   nl:NUM_LONG  
+        	{ 
+        		try 
+        		{
+        			ce = ExpressionFactory.createExpression(nl.getText(),TypeConstants.longType);
+        			if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+        		}
+        		catch (SPLException excep) 
+        		{
+        			ASTWithLineNumber q = (ASTWithLineNumber)nl;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+        			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());
+        		}
+        	}
+        |   nd:NUM_DOUBLE 
+        	{ 
+        		try 
+        		{
+        			ce = ExpressionFactory.createExpression(nd.getText(),TypeConstants.doubleType);
+        			if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: expression created "+ce.toString());
+   
+        		} 
+        		catch (SPLException excep) 
+        		{
+        			ASTWithLineNumber q = (ASTWithLineNumber)nd;
+					logger.severe(excep.getMessage());
+					logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+					//System.out.println(excep.getMessage());
+					//System.out.println("TreeParser::Exception inserting symbol at line "+q.getLine());
+        			System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+excep.getMessage());
+					throw new RecognitionException(excep.getMessage());
+        		}
+        	}
+;
+
+
+
+actionBlock[SPLSymbolTable symTab] returns [ActionBlock ab = null]
+{
+  ActionBlock ab1 = null;
+  ActionBlock ab2 = null;
+}
+:
+                 #(ARROW ab1 = actionBlock[symTab] ab2 = actionBlock[symTab]) 
+                {
+                 	ab = ActionFactory.createAction(ab1,ab2,ARROW,symTab); 
+                 	if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: ARROW ActionBlock created ");
+   
+                }
+                |#(LOR ab1 = actionBlock[symTab] ab2 = actionBlock[symTab]) 
+                {
+                	ab = ActionFactory.createAction(ab1,ab2,LOR,symTab); 
+                	if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: LOR ActionBlock created ");
+   
+                }
+                |#(LAND ab1 = actionBlock[symTab] ab2 = actionBlock[symTab])
+                {
+                	ab = ActionFactory.createAction(ab1,ab2,LAND,symTab); 
+                	if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: LAND ActionBlock created ");
+   
+                }
+                |#(BOR ab1 = actionBlock[symTab] ab2 = actionBlock[symTab]) 
+                {
+                	ab = ActionFactory.createAction(ab1,ab2,BOR,symTab); 
+                	if(logger.isLoggable(Level.FINE))
+  						logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: BOR ActionBlock created ");
+   
+                }
+                | ab = basicActionBlock[symTab]
+       ;
+                             
+                        
+basicActionBlock[SPLSymbolTable symTab] returns [ActionBlock ab=null] :
+{
+        ArrayList paramList = new ArrayList();
+        String ident1 = null;
+        String ident2 = "";
+        String st = "";
+        String op = ""; 
+        MethodSymbol x=null;
+        SPLSymbolTable table=symTab;
+        Expression c = null;
+       
+}
+   #( ACTIONBLOCK
+   				( 
+   					id1:IDENT {ident1 = id1.getText(); } 
+            	|     
+            		s:"Set" {st = s.getText();} 
+            	|
+            		i:"InvokePolicy" {st = i.getText();} 
+            	) 
+            	
+            	( 
+            		id2:IDENT 
+            			{
+            				ident2 = id2.getText();
+            				try
+            				{
+            					//System.out.println(" trying to get method  : "+ ident1+"."+ident2	);
+            					x = (MethodSymbol)symTab.getSymbol(ident1+"."+ident2);
+            				}
+            				catch (SPLException ex)
+            				{
+            					//System.out.println(" symTab get method Symbol failed : "+ ex.getMessage()	);
+            				}		
+            				if(x!=null)
+            				{
+            					//System.out.println(" x != null");
+            					SPLSymbolTable methodTable=x.getMethodSymbolTable(); 
+            					if(methodTable!=null)
+            					{
+            						//System.out.println("table is not null therefore table.setParentSymbolTable(symTab)");
+            						table=methodTable;
+            						table.setParentSymbolTable(symTab); 
+            					}
+            					else
+            					{
+            						//System.out.println("table is null therefore table=symTab");
+            						table=symTab;
+            					}
+            				}
+            				else
+            				{
+            					//System.out.println("x is null therefore table=symTab");
+            					table=symTab;
+            				}
+            			} 
+            	)?  
+            	
+    			#(METHOD_CALL 
+    						(
+    							paramList = exprList[table]
+    						)
+      			 ) 
+      			 
+            	(
+            		(
+            			e:EQUAL {op = e.getText();}
+            		| 
+            			ne:NOT_EQUAL {op = ne.getText();} 
+            		|
+            			ge:GE {op = ge.getText();}
+            		| 
+            			gt:GT {op = gt.getText();}
+            		| 
+            			lt:LT {op = lt.getText();}
+            		| 
+            			le:LE {op = le.getText();} 
+            		) 
+            	
+            		c=constant
+           		)?
+     )  
+{
+       //System.out.println("ident1, ident2 "+ident1+" "+ ident2);
+       try
+       {
+       	//System.out.println("creating action : "+ident1+" "+ident2+" "+st+" "+op);
+        ab = ActionFactory.createAction(ident1, ident2, paramList, st, op, c,symTab);
+        if(logger.isLoggable(Level.FINE))
+  			logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: basicActionBlock created ");
+       }
+       catch (SPLException ex)
+       {
+       	   ASTWithLineNumber q = (ASTWithLineNumber)id1;
+			logger.severe(ex.getMessage());
+			logger.severe(Thread.currentThread().getName()+" "+"TreeParser::Exception creating Expression at line "+q.getLine());
+		//System.out.println(ex.getMessage());
+		//System.out.println("TreeParser::Exception inserting action at line "+q.getLine());
+        	System.err.println("$SPLTreeParser$ Error at line no#"+q.getLine()+":"+ex.getMessage());
+			throw new RecognitionException(ex.getMessage());
+       	
+       }		 	
+   
+        
+}                 
+             
+;    
+
+policyGroup[SPLSymbolTable symTab] returns [PolicyGroup pg = null]:
+{
+   String assocName = "CIM_Component";
+   String role1="GroupComponent";
+   String role2="PartComponent";
+   SPLPolicy c = null;
+ 
+}
+#(POLICY_GRP_DEF (#(ASSOCIATION #(id1:IDENT id2:IDENT id3:IDENT {assocName = id1.getText(); role1=id2.getText(); role2=id3.getText();} ))) c=splpolicy[dataCollector,symTab] p:priority)
+{
+   
+   pg = new PolicyGroup(assocName,role1,role2,c,p.getText(),symTab);
+   if(logger.isLoggable(Level.FINE))
+  		logger.fine(Thread.currentThread().getName()+" CIMSPLTreeParser:: PolicyGroup created ");
+         
+}        
+;    
+              
+
+splType returns [String tp]
+{
+    boolean isArray = false;
+    tp="";
+    
+    
+}
+:
+	 t:basicSplTypes (LBRACK RBRACK {isArray = true;})?
+{
+    tp = t.getText();
+    //System.out.println(" cimtype = "+tp);
+    if (isArray)
+    {
+        tp=tp+"[]";
+        //System.out.println(" adding [] to cimtype = "+tp);
+    }
+    //System.out.println(" cimtype = "+tp);
+   
+}         
+        ;
+        
+basicSplTypes :
+"Sint8" | "Sint16" | "Uint8" | "Uint16" | 
+ "Sint32" | "Sint64" | "Uint32" | "Uint64" |
+    "Real32" | "Real64" | "Boolean" | "Char16"|
+     "String" | "DateTime" | "Reference" 
+;    
+
+
+

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,134 @@
+// $ANTLR : "cimspl.g" -> "SPLParser.java"$
+
+  	/*
+ * Copyright 2007 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+	/**
+	 * @author Neeraj Joshi <jn...@us.ibm.com>
+	 *
+	 */
+  package org.apache.imperius.spl.parser.compiler;
+  
+public interface cimsplTokenTypes {
+	int EOF = 1;
+	int NULL_TREE_LOOKAHEAD = 3;
+	int STRATEGY_DEF = 4;
+	int IMPORT_DEF = 5;
+	int DECL_DEF = 6;
+	int CONSTANT_DEFN = 7;
+	int MACRO_DEFN = 8;
+	int POLICY_DEF = 9;
+	int CONDITION_DEF = 10;
+	int POLICY_GRP_DEF = 11;
+	int DECISION_DEF = 12;
+	int TYPE = 13;
+	int ARGUMENTS = 14;
+	int ARG_DEF = 15;
+	int EXPR = 16;
+	int ELIST = 17;
+	int METHOD_CALL = 18;
+	int UNARY_MINUS = 19;
+	int QUALIFIER = 20;
+	int PARAMETERS = 21;
+	int PARAMETER_DEF = 22;
+	int UNARY_PLUS = 23;
+	int ARRAY_DECLARATOR = 24;
+	int INDEX_OP = 25;
+	int COLLECT_OP = 26;
+	int ASSOCIATION = 27;
+	int ACTIONBLOCK = 28;
+	int COLLECT_CALL = 29;
+	int UNARY_NOT = 30;
+	int BASICCOLLECTION_OP = 31;
+	int LITERAL_Import = 32;
+	int LITERAL_Class = 33;
+	int IDENT = 34;
+	int DOT = 35;
+	int SEMI = 36;
+	int LITERAL_Qualifier = 37;
+	int COLON = 38;
+	int COMMA = 39;
+	int LITERAL_Strategy = 40;
+	int LITERAL_Execute_All_Applicable = 41;
+	int LITERAL_Execute_First_Applicable = 42;
+	int LITERAL_Declaration = 43;
+	int LCURLY = 44;
+	int RCURLY = 45;
+	int ASSIGN = 46;
+	int LITERAL_Macro = 47;
+	int LITERAL_Name = 48;
+	int LITERAL_type = 49;
+	int LITERAL_procedure = 50;
+	int LITERAL_argument = 51;
+	int LITERAL_Policy = 52;
+	int LITERAL_Condition = 53;
+	int LITERAL_Decision = 54;
+	int NUM_INT = 55;
+	int LOR = 56;
+	int LAND = 57;
+	int BXOR = 58;
+	int NOT_EQUAL = 59;
+	int EQUAL = 60;
+	int LT = 61;
+	int GT = 62;
+	int LE = 63;
+	int GE = 64;
+	int PLUS = 65;
+	int MINUS = 66;
+	int STAR = 67;
+	int DIV = 68;
+	int LNOT = 69;
+	int LITERAL_true = 70;
+	int LITERAL_false = 71;
+	int LITERAL_Self = 72;
+	int LPAREN = 73;
+	int RPAREN = 74;
+	int LITERAL_collect = 75;
+	int LBRACK = 76;
+	int RBRACK = 77;
+	int CHAR_LITERAL = 78;
+	int STRING_LITERAL = 79;
+	int NUM_FLOAT = 80;
+	int NUM_LONG = 81;
+	int NUM_DOUBLE = 82;
+	int ARROW = 83;
+	int BOR = 84;
+	int LITERAL_Set = 85;
+	int LITERAL_InvokePolicy = 86;
+	int LITERAL_PolicyGroup = 87;
+	// "Sint8" = 88
+	// "Sint16" = 89
+	// "Uint8" = 90
+	// "Uint16" = 91
+	// "Sint32" = 92
+	// "Sint64" = 93
+	// "Uint32" = 94
+	// "Uint64" = 95
+	// "Real32" = 96
+	// "Real64" = 97
+	int LITERAL_Boolean = 98;
+	// "Char16" = 99
+	int LITERAL_String = 100;
+	int LITERAL_DateTime = 101;
+	int LITERAL_Reference = 102;
+	int WS = 103;
+	int SL_COMMENT = 104;
+	int ML_COMMENT = 105;
+	int ESC = 106;
+	int HEX_DIGIT = 107;
+	int EXPONENT = 108;
+	int FLOAT_SUFFIX = 109;
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.txt
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.txt?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.txt (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/cimsplTokenTypes.txt Sat Dec 22 11:33:46 2007
@@ -0,0 +1,121 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// $ANTLR : cimspl.g -> cimsplTokenTypes.txt$
+cimspl    // output token vocab name
+STRATEGY_DEF=4
+IMPORT_DEF=5
+DECL_DEF=6
+CONSTANT_DEFN=7
+MACRO_DEFN=8
+POLICY_DEF=9
+CONDITION_DEF=10
+POLICY_GRP_DEF=11
+DECISION_DEF=12
+TYPE=13
+ARGUMENTS=14
+ARG_DEF=15
+EXPR=16
+ELIST=17
+METHOD_CALL=18
+UNARY_MINUS=19
+QUALIFIER=20
+PARAMETERS=21
+PARAMETER_DEF=22
+UNARY_PLUS=23
+ARRAY_DECLARATOR=24
+INDEX_OP=25
+COLLECT_OP=26
+ASSOCIATION=27
+ACTIONBLOCK=28
+COLLECT_CALL=29
+UNARY_NOT=30
+BASICCOLLECTION_OP=31
+LITERAL_Import="Import"=32
+LITERAL_Class="Class"=33
+IDENT=34
+DOT=35
+SEMI=36
+LITERAL_Qualifier="Qualifier"=37
+COLON=38
+COMMA=39
+LITERAL_Strategy="Strategy"=40
+LITERAL_Execute_All_Applicable="Execute_All_Applicable"=41
+LITERAL_Execute_First_Applicable="Execute_First_Applicable"=42
+LITERAL_Declaration="Declaration"=43
+LCURLY=44
+RCURLY=45
+ASSIGN=46
+LITERAL_Macro="Macro"=47
+LITERAL_Name="Name"=48
+LITERAL_type="type"=49
+LITERAL_procedure="procedure"=50
+LITERAL_argument="argument"=51
+LITERAL_Policy="Policy"=52
+LITERAL_Condition="Condition"=53
+LITERAL_Decision="Decision"=54
+NUM_INT=55
+LOR=56
+LAND=57
+BXOR=58
+NOT_EQUAL=59
+EQUAL=60
+LT=61
+GT=62
+LE=63
+GE=64
+PLUS=65
+MINUS=66
+STAR=67
+DIV=68
+LNOT=69
+LITERAL_true="true"=70
+LITERAL_false="false"=71
+LITERAL_Self="Self"=72
+LPAREN=73
+RPAREN=74
+LITERAL_collect="collect"=75
+LBRACK=76
+RBRACK=77
+CHAR_LITERAL=78
+STRING_LITERAL=79
+NUM_FLOAT=80
+NUM_LONG=81
+NUM_DOUBLE=82
+ARROW=83
+BOR=84
+LITERAL_Set="Set"=85
+LITERAL_InvokePolicy="InvokePolicy"=86
+LITERAL_PolicyGroup="PolicyGroup"=87
+"Sint8"=88
+"Sint16"=89
+"Uint8"=90
+"Uint16"=91
+"Sint32"=92
+"Sint64"=93
+"Uint32"=94
+"Uint64"=95
+"Real32"=96
+"Real64"=97
+LITERAL_Boolean="Boolean"=98
+"Char16"=99
+LITERAL_String="String"=100
+LITERAL_DateTime="DateTime"=101
+LITERAL_Reference="Reference"=102
+WS=103
+SL_COMMENT=104
+ML_COMMENT=105
+ESC=106
+HEX_DIGIT=107
+EXPONENT=108
+FLOAT_SUFFIX=109

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/AnchorData.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/AnchorData.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/AnchorData.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/AnchorData.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,163 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.imperius.spl.parser.compiler.symboltable;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.external.InstanceInfo;
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class AnchorData 
+{
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+    private static final String sourceClass="AnchorData";
+    
+	private Map _classNameToQualifierMap;
+	private Map _classNameToInstanceInfoListMap;
+	
+	public AnchorData()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "AnchorData");
+		_classNameToQualifierMap = new Hashtable();
+		_classNameToInstanceInfoListMap = new Hashtable();
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "AnchorData");
+		
+	}
+	
+	public List getAnchorClassList()
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getAnchorClassList");
+		List anchorClassList = new ArrayList();
+		Iterator anchorKeySetIt = _classNameToInstanceInfoListMap.keySet().iterator();
+		while(anchorKeySetIt.hasNext())
+		{
+			String className = (String)anchorKeySetIt.next();
+			anchorClassList.add(className);
+		}
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getAnchorClassList");
+		return anchorClassList;
+		
+	}
+	
+	public Object getInstance(String instanceName) 
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getInstance");
+		Object instance = null;
+		Iterator anchorKeySetIt = _classNameToInstanceInfoListMap.keySet().iterator();
+		while(anchorKeySetIt.hasNext())
+		{	
+			String className = (String)anchorKeySetIt.next();
+			List instanceInfoList = (List)_classNameToInstanceInfoListMap.get(className);
+			Iterator instanceInfoListIt = instanceInfoList.iterator();
+			while(instanceInfoListIt.hasNext())
+			{
+				InstanceInfo ii = (InstanceInfo)instanceInfoListIt.next();
+				if(ii.getInstanceName().equals(instanceName))
+				{
+					instance = ii.getInstance();
+					return instance;
+					
+				}
+			}
+		}	
+		
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getInstance");
+		return instance;
+		
+		
+	}
+	
+	public void insertInstanceObject(String className, 
+			String instanceName, 
+			Object instance) throws SPLException 
+	{
+		
+		List instanceInfoList = (List)_classNameToInstanceInfoListMap.get(className);
+		
+
+		boolean instanceFound = false;
+		
+		Iterator instanceInfoListIt = instanceInfoList.iterator();
+		while(instanceInfoListIt.hasNext())
+		{
+			InstanceInfo instanceInfo = (InstanceInfo) instanceInfoListIt.next();
+			//System.out.println(" instanceInfo.getInstanceName() "+instanceInfo.getInstanceName());
+			//System.out.println(" instanceName "+instanceName);
+			
+			if(instanceInfo.getInstanceName() != null)
+			{	
+				if(instanceInfo.getInstanceName().equalsIgnoreCase(instanceName))
+				{
+					//System.out.println(" instanceInfo.getInstanceName() "+instanceInfo.getInstanceName());
+					instanceInfo.setInstance(instance);
+					instanceFound = true;
+					break;
+				}
+			}
+			else 
+			{
+				
+				
+//				break;
+			}
+		
+			
+		}
+		if(!instanceFound)
+		{
+			throw new SPLException("Invalid instance Name " + instanceName);
+		}
+		
+		
+	}
+	
+	public String getQualifierForClass(String className)
+	{
+		String qualifier = (String)_classNameToQualifierMap.get(className);
+		return qualifier;
+	}
+	
+	public List getInstanceInfoList(String className)
+	{
+		List instanceInfoList = (List)_classNameToInstanceInfoListMap.get(className);
+		return instanceInfoList;
+		
+	}
+	
+	public void addInstanceInfoListForClass(String className, List instanceInfoList)
+	{
+		//System.out.println("className "+className);
+		//System.out.println("instanceInfoList "+instanceInfoList);
+		_classNameToInstanceInfoListMap.put(className, instanceInfoList);
+		
+	}
+	
+	public void addQualifierForClass(String className, String qualifier)
+	{
+		if(qualifier != null)
+		{	
+			_classNameToQualifierMap.put(className, qualifier);
+		}	
+		
+	}
+	
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MacroSymbol.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MacroSymbol.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MacroSymbol.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MacroSymbol.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,193 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+
+
+package org.apache.imperius.spl.parser.compiler.symboltable;
+
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.statements.impl.MacroDefinition;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+import org.apache.imperius.util.SPLLogger;
+
+
+public class MacroSymbol implements Symbol 
+{
+	private String _macroName;
+	private TypeInfo _returnType = new TypeInfo();
+	private List _argTypeList;
+	private MacroDefinition _macroDefn;
+	private static Logger logger = SPLLogger.getSPLLogger().getLogger();
+	private static final String sourceClass="MacroSymbol";
+    private boolean _isArray=false;
+	
+	public MacroSymbol(String macroName, TypeInfo retType, List argTypes, MacroDefinition md) 
+		throws SPLException
+	{
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "MacroSymbol");
+		
+		this._macroName = macroName;
+		this._returnType.copy(retType);
+		_returnType.setReferenceTypeName(md.getReferenceTypeName());
+		this._argTypeList = argTypes;
+		this._macroDefn = md;
+        if(md.isArray())
+        {
+            this._isArray=true;
+        }
+       //System.out.println("new MacroSymbol : "+macroName+" "+retType+" "+argTypes);
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "MacroSymbol");
+		
+		
+	}
+	
+	public TypeInfo getType() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getType");
+		
+		// TODO Auto-generated method stub
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getType");
+		
+		return _returnType;
+	}
+
+	public Object getValue() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getValue");
+		
+		// TODO Auto-generated method stub
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getValue");
+		
+		return null;
+	}
+
+	public List getArgTypeList() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getArgTypeList");
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getArgTypeList");
+		
+		
+		return _argTypeList;
+	}
+
+	public void setArgTypeList(List argTypeList) {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setArgTypeList");
+		
+		_argTypeList = argTypeList;
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setArgTypeList");
+		
+		
+	}
+
+	public MacroDefinition getMacroDefn() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroDefn");
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroDefn");
+		
+		
+		return _macroDefn;
+	}
+
+	public void setMacroDefn(MacroDefinition macroDefn) {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroDefn");
+		
+		
+		_macroDefn = macroDefn;
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroDefn");
+		
+	}
+
+	public String getMacroName() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "getMacroName");
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "getMacroName");
+		
+		
+		return _macroName;
+	}
+
+	public void setMacroName(String macroName) {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setMacroName");
+		_macroName = macroName;
+
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setMacroName");
+		
+	}
+
+	
+	public void setReturnType(TypeInfo returnType) {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "setReturnType");
+		
+		_returnType.copy(returnType);
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "setReturnType");
+		
+	}
+
+	public boolean isArray() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "isArray");
+		
+		
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "isArray");
+		
+		return _returnType.getIsArray();
+	}
+
+	public boolean isKey() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "isKey");
+		
+		// TODO Auto-generated method stub
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "isKey");
+		
+		return false;
+	}
+
+	public boolean isClassSymbol() {
+		logger.entering(sourceClass,Thread.currentThread().getName()+" "+ "isClassSymbol");
+		
+		// TODO Auto-generated method stub
+		logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "isClassSymbol");
+		
+		return false;
+	}
+
+     public boolean isArray(boolean isArray)
+        {
+            return _returnType.getIsArray();
+        }
+     
+    public void setArray(boolean isArray)
+    {
+        _returnType.setIsArray(isArray);
+    }
+
+	public String getReferenceTypeName() 
+	{
+		//String referenceTypeName;
+		/*try 
+		{
+			referenceTypeName = _macroDefn.getReferenceTypeName();
+		} catch (SPLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			referenceTypeName = "";
+		}*/
+		//return referenceTypeName;
+		return _returnType.getReferenceTypeName();
+	}
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MethodSymbol.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MethodSymbol.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MethodSymbol.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/MethodSymbol.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,165 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+
+
+package org.apache.imperius.spl.parser.compiler.symboltable;
+
+import java.util.List;
+
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+
+
+
+
+public class MethodSymbol implements Symbol 
+{
+	private String _methodName;
+	private TypeInfo _returnType = new TypeInfo();
+	private List _argList;
+	private SPLSymbolTable _methodSymbolTable=null;
+	
+	public MethodSymbol(String nName, 
+			int retType, 
+			boolean isReturnArray, 
+			String returnReferenceType, 
+			List argList,
+			SPLSymbolTable metSym) throws SPLException
+	{
+		
+		
+		_methodName = nName;
+		_returnType.setIsArray(isReturnArray);
+		_returnType.setReferenceTypeName(returnReferenceType);
+		_returnType.setType(retType);
+		//_returnType = new TypeInfo(retType,returnReferenceType,isReturnArray);
+		_argList=argList;
+		_methodSymbolTable = metSym;
+		
+	}
+	
+	public MethodSymbol(String nName, 
+			TypeInfo retType, 
+			List argTypeList,
+			SPLSymbolTable argSymbols)
+	{
+		
+		
+		_methodName = nName;
+		_returnType.copy(retType);
+		_argList=argTypeList;
+		_methodSymbolTable=argSymbols;
+		
+	}
+	
+	public String getMethodName() 
+	{
+		
+		return _methodName;
+	}
+
+
+	public void setMethodName(String methodName) 
+	{
+			
+		_methodName = methodName;
+	
+		
+	}
+
+
+	public TypeInfo getType() 
+	{
+			
+		return _returnType;
+	}
+
+	public Object getValue() 
+	{
+	
+		return null;
+	}
+
+
+	public boolean isArray() 
+	{
+	
+		return false;
+	}
+
+
+	public boolean isKey() 
+	{
+	
+		return false;
+	}
+
+
+	public boolean isClassSymbol() 
+	{
+	
+		return true;
+	}
+
+
+	public List getArgumentList() 
+	{
+	
+		
+		return _argList;
+	}
+
+
+	public void setArgumentList(List argList) 
+	{
+	
+		
+		_argList = argList;
+	
+		
+	}
+
+
+	public String getReferenceTypeName() 
+	{
+			return _returnType.getReferenceTypeName();
+	}
+
+	public boolean isReturnArray() 
+	{
+		return _returnType.getIsArray();
+	}
+
+	
+
+	public TypeInfo getReturnType() {
+		return _returnType;
+	}
+
+	public SPLSymbolTable getMethodSymbolTable() {
+		return _methodSymbolTable;
+	}
+
+	public void getMethodSymbolTable(SPLSymbolTable symbolTable) {
+		_methodSymbolTable = symbolTable;
+	}
+
+}

Added: incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/PropertySymbol.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/PropertySymbol.java?rev=606479&view=auto
==============================================================================
--- incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/PropertySymbol.java (added)
+++ incubator/imperius/trunk/trunk/modules/imperius-splcore/src/org/apache/imperius/spl/parser/compiler/symboltable/PropertySymbol.java Sat Dec 22 11:33:46 2007
@@ -0,0 +1,123 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//
+
+/**
+ * @author Prashant Baliga <pr...@in.ibm.com>
+ *
+ */
+
+
+
+package org.apache.imperius.spl.parser.compiler.symboltable;
+
+import org.apache.imperius.spl.parser.exceptions.SPLException;
+import org.apache.imperius.spl.parser.util.TypeInfo;
+
+
+
+
+
+public class PropertySymbol implements Symbol 
+{
+	
+	private TypeInfo _dataType = new TypeInfo();
+	private String _name;
+	private Object _value;
+	//private boolean _isArray;
+	private boolean _isKey;
+	//private String _referenceTypeName;
+	private boolean _isPropertyOfClass;
+	
+	public PropertySymbol(String n, 
+			int type, 
+			String referenceType, 
+			boolean isArray, 
+			boolean isKey, 
+			boolean isProp) throws SPLException
+	{
+		_dataType = new TypeInfo(type,referenceType,isArray);
+		_name = n;
+		_isKey = isKey;
+		_isPropertyOfClass = isProp;
+	}
+	
+	public PropertySymbol(
+			String n, 
+			TypeInfo tp ,
+			boolean isKey, 
+			boolean isProp)
+	{
+		
+		this._name = n;
+		this._dataType.copy(tp);
+		
+		this._isKey = isKey;
+		this._isPropertyOfClass = isProp;
+		
+		
+	}
+
+	public TypeInfo getType() 
+	{
+		
+		return _dataType;
+	}
+	
+	public Object getValue() 
+	{
+		
+		return _value;
+	}
+	
+	public void setValue(Object o) 
+	{
+		
+		_value = o;
+	}
+
+
+	public String getName() 
+	{
+			
+		return _name;
+	}
+
+
+	public boolean isArray() 
+	{
+		
+		return _dataType.getIsArray();
+	}
+
+
+	public boolean isKey() 
+	{
+			
+		return _isKey;
+	}
+
+	public boolean isClassSymbol() 
+	{
+	
+		return _isPropertyOfClass;
+	}
+
+	public String getReferenceTypeName() 
+	{
+		
+		return _dataType.getReferenceTypeName();
+	}
+
+}