anchor.diff:  			int k  = FunctionName.indexOf($ID.text);
   			int index = 0;
   			boolean isPub = true;
  -			boolean isFound = false;
  -			for(Function i : FunctionList)
  -			{
  -				if(i.name.equals($ID.text+ "_" + $callParameter.paranum))
  -				{
  -					isPub = i.flag;
  -					isFound = true;
  -					break;
  -				}
  -				index++;
  -			}
  -			if(!isFound)
  -			{
  -				if(!FunctionError.contains($ID.text+ "_" + $callParameter.paranum))
  -					FunctionError.add($ID.text+ "_" + $callParameter.paranum);
  -			}
   			if ((k >= 0) && (FunctionType.get(k) == "int&"))
   			{
   				if(isPub)
  -					$name = "var temp = this." + $ID.text + "_" + $callParameter.paranum + "(" + $callParameter.name + ");\n" + "\t"+ $callParameter.temp1 + "= temp[0];\n" + "\t" +$callParameter.temp2 + "= temp[1]";
  +					$name = "var temp = " + $ID.text + "_" + $callParameter.paranum + "(" + $callParameter.name + ");\n" + "\t"+ $callParameter.temp1 + "= temp[0];\n" + "\t" +$callParameter.temp2 + "= temp[1]";
   				else
   					$name = "var temp = " + $ID.text + "_" + $callParameter.paranum + "(" + $callParameter.name + ");\n" + "\t"+ $callParameter.temp1 + "= temp[0];\n" + "\t" +$callParameter.temp2 + "= temp[1]";
   			}
  
positive.code: 	|	{$name = "";}
  	;
  
  classDeclaration returns [String name]
  @init{
  	name = null;
  }
  	:	type classFunctionVariable
  		{
  			$name = "\t" + $classFunctionVariable.name + "\n";
  		}
  	|	constructFunction
  		{
  			//$name = $constructFunction.name + "\n";
  			$name = $constructFunction.initial + "\n";
  			CurClass.initial = $constructFunction.initial;
  		}
  	|	LINE_COMMENT 
  		{$name = "";}
  	|	COMMENT 
  		{$name = "";}
  	;
  	
  	
  declaration returns [String name]
  @init{
  	name = null;
  }
  	:	classDefine
  		{$name = $classDefine.name + "\n";}
  	|	type functionVariable
  		{
  			$name = $functionVariable.name + "\n";
  			CurVariable.type = $type.name;
  			VariableList.add(CurVariable);
  		}
  	|	LINE_COMMENT 
  		{$name = "";}
  	|	COMMENT 
  		{$name = "";}
  	;
  
  //public
  	
  classDefine returns [String name]
  @init{
  	name = null;
  }
  	:	'class' className classImplement
  		{	
  			$name = "function " + $className.name + $classImplement.para + "\n" + $classImplement.name;
  			ClassList.add(CurClass);
  		}
  	;	
  	
  className returns [String name]
  @init{
  	name = null;
  }
  	:	ID
  		{
  			$name = $ID.text;
  			CurClass = new ClassStruct();
  			CurClass.ClassName = $ID.text;
  		}
  	;
  
  classImplement returns [String name, String para]
  @init{
  	$name = null;
  	$para = "";
  }
  	/*:	'{' privateBlock constructFunction publicBlock '}' ';'
  		{
  			$name = "{\n" + $privateBlock.name + "\n" + $constructFunction.initial  + $publicBlock.name + "};\n";
  			
  		}*/
  	:	'{' classBlock '}' ';'
  		{
  			$name = "{\n" + $classBlock.name + "};\n";
  			$para = CurClass.ConstructFunctionPara;
  		}
  	;
  
  classBlock returns [String name]
  @init{
  	name = null;
  }
  	:	classStat a=classBlock
  		{
  			$name = $classStat.name + $a.name;
  		}
  	|	{
  			$name = "";
  		}
  	;
  
  classStat returns [String name]
  @init{
  	name = null;
  }
  	:	classDeclaration
  		{
  			$name = $classDeclaration.name;
  		}
  	|	'public' ':'
  		{
  			$name = "\n";
  			isPublic = true;
  		}
  	|	'private' ':'
  		{
  			$name = "\n";
  			isPublic = false;
  		}
  	;
  
  constructFunction returns [String name, String para, String initial]
  @init{
  	$name = null;
  	$para = null;
  	$initial = null;
  }
  	:	decFunction
  		{
  			$name = "this." + $decFunction.funname + "=function" + $decFunction.para;
  			$para = $decFunction.justpara;
  			CurClass.ConstructFunctionPara = $para;
  			$initial = $decFunction.initial;
  		}
  	;
  
  constructObject returns [String name]
  @init{
  	name = null;
  }
  	:	ID callNameInObject ';'
  		{
  			$name = "var " + $callNameInObject.var + " = new " +  $ID.text + $callNameInObject.para;
  			String classname = $ID.text;
  			boolean isFound = false;
  			for(ClassStruct i: ClassList)
  			{
  				if(i.ClassName.equals(classname))
  				{
  					isFound = true;
  					break;
  				}
  			}
  			if(!isFound)
  			{
  				if(!ClassError.contains(classname))
  					ClassError.add(classname);
  			}
  		}
  	; 
  
  ieStat returns [String name]
  @init{
  
negative.code: 	|	'-' expr
  		{$name = "-" + $expr.name;}
  	|	'{'	INT ints '}'
  		{$name = "[" + $INT.text + $ints.name + "]";}
  	;
  
  expr returns [String name]
  