public boolean interpret(LinkedList<GToken> input,GToken start)//takes in a goddamn stack n a fucking input
	{
		//stack starts with start token/symbol and an ending symbol
		LinkedList<GToken> stack=new LinkedList<GToken>();
		GToken end=new GToken("<END_STRING>",true);
		stack.addFirst(end);
		stack.addFirst(start);
		int j=0;
		System.out.println("STARTIN STACK");
		while(!stack.get(0).equals(end)&&j<40000)//fix
		{
			System.out.println("stack "+stack.toString());
			j++;
			GToken compare=stack.get(0);//is this zero?
			GRule toRun=getCell(compare,input.pop());//this shit all psudo, should
			System.out.println(toRun.toString());
			//be the compare thingy colum goto row.
			//push the shit onto the stack
			//for (GToken t:toRun.tokenList)
			//for(int i=toRun.tokenList.size()-1;i<0;i--)
			if(toRun == null) return true;
			int i=toRun.tokenList.size()-1;
			while(i>0)
			{
				
				stack.addFirst(toRun.tokenList.get(i));
				i--;
			}
			if(j==39998) return false;
		}
		return true;
		
	}