@Override
	public void dumpLALR1DFA()
	{
		Element lalrDFANode = (Element) dumpTop.appendChild(document.createElement("lalr_dfa"));
		for(int statenum = 0;statenum <= parseTable.getLastState();statenum++)
		{
			LALR1State state = dfa.getState(statenum);
			Element stateNode = (Element) lalrDFANode.appendChild(document.createElement("state"));
			stateNode.setAttribute("id",String.valueOf(statenum));
			stateNode.setAttribute("tag","ds" + statenum);
			for(LALR1StateItem item : state.getItems())
			{
				Element itemNode = (Element) stateNode.appendChild(document.createElement("item"));
				itemNode.setAttribute("production","p" + numbering.get(item.getProd()));
				itemNode.setAttribute("marker",String.valueOf(item.getPosition()));
				for(Terminal lookahead : dfa.getLookahead(state,item))
				{
					Element lookaheadNode = (Element) itemNode.appendChild(document.createElement("lookahead"));
					lookaheadNode.setTextContent("t" + numbering.get(lookahead));
				}
			}
			for(LALR1Transition transition : dfa.getTransitions(state))
			{
				Element transitionNode = (Element) stateNode.appendChild(document.createElement("transition"));
				GrammarSymbol label = transition.getLabel();
				if(label instanceof Terminal) transitionNode.setAttribute("label","t" + numbering.get(label));
				else /* if(label instanceof NonTerminal) */ transitionNode.setAttribute("label","nt" + numbering.get(label));
				transitionNode.setAttribute("dest","ds" + dfa.getLabel(transition.getDest()));
			}
		}
	}