public String[][] getDifferences(LLParseTable table) {
		if (!Arrays.equals(variables, table.variables)
				|| !Arrays.equals(terminals, table.terminals))
			throw new IllegalArgumentException(
					"Tables differ in variables or terminals.");
		ArrayList differences = new ArrayList();
		for (int v = 0; v < entries.length; v++)
			for (int t = 0; t < entries[v].length; t++)
				if (!entries[v][t].equals(table.entries[v][t])) {
					if (t == terminals.length)
						differences.add(new String[] { variables[v], "$" });
					else
						differences.add(new String[] { variables[v],
								terminals[t] });
				}
		return (String[][]) differences.toArray(new String[0][0]);
	}