public void initialize(String string) {
		DefaultTreeModel oldTree = tree;
		tree = parseTree(string, pane.grammar, pane.table);
		if (tree == null) {
			tree = oldTree;
			pane.statusDisplay.setText("Preliminary parse failed.");
			return;
		}
		dehighlight();
		pane.treeDrawer.setModel(tree);
		pane.treeDrawer.hideAll();
		pane.treePanel.repaint();
		pane.stepAction.setEnabled(true);
		pane.derivationModel.setRowCount(0);
		pane.derivationModel.addRow(new String[] { "", string });
		reduceStep = 0;
		// Initialize those global structures! :)
		STRING = string + "$";
		P = 0;
		STACK = new IntStack();
		NODECOUNT = 0;
		// STACK.push("$");
		STACK.push(0);
		updateStatus();
		pane.statusDisplay.setText("Press step to begin.");
	}