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 ke...@apache.org on 2008/01/11 18:57:14 UTC

svn commit: r611261 [3/43] - in /incubator/imperius/trunk: ./ imperius-javaspl/ imperius-javaspl/src/main/java/org/apache/imperius/javaspl/ imperius-splcore/ imperius-splcore/src/main/antlr/org/apache/imperius/spl/parser/compiler/ imperius-splcore/src/...

Modified: incubator/imperius/trunk/imperius-splcore/src/main/antlr/org/apache/imperius/spl/parser/compiler/cimspl.tree.g
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/antlr/org/apache/imperius/spl/parser/compiler/cimspl.tree.g?rev=611261&r1=611260&r2=611261&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/antlr/org/apache/imperius/spl/parser/compiler/cimspl.tree.g (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/antlr/org/apache/imperius/spl/parser/compiler/cimspl.tree.g Fri Jan 11 10:56:30 2008
@@ -1,1455 +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(className.toString(),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" 
-;    
-
-
-
+/*
+ * 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(className.toString(),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());

[... 674 lines stripped ...]