public void traceBack()
	{
		if (!myTraceAvailable)
			return;
		CYKTracer cykTracer=new CYKTracer(grammar, myParser.getTrace());
		cykTracer.traceBack();
		myAnswers=cykTracer.getAnswer();
		
	/*	System.out.println("Answer is ");
		for (int i=0; i<myAnswers.length; i++)
			System.out.println(myAnswers[i].getLHS()+" -> "+myAnswers[i].getRHS());
	*/
		if (!myAnswers[0].getLHS().equals(grammar.getStartVariable()))
		{
			
			for (int i=1; i<myAnswers.length; i++)
			{
				if (myAnswers[i].getLHS().equals(grammar.getStartVariable()))
				{
					Production p=myAnswers[0];
					myAnswers[0]=myAnswers[i];
					myAnswers[i]=p;
					break;
				}
			}
		}
		
		
	
	/*	System.out.println("After is ");
		for (int i=0; i<myAnswers.length; i++)
			System.out.println(myAnswers[i].getLHS()+" -> "+myAnswers[i].getRHS());
	*/		
		myCurrentAnswerNode=new ParseNode(grammar.getStartVariable(), new Production[0], new int[0]);
		myQueue=new LinkedList();
		myQueue.add(myCurrentAnswerNode);
		myIndex=0;
		stepForward();
	}