private void generate() {
		State<Item> finalState = this.getAutomaton().getFinals().getFirst();
		this.addAction(ActionType.ACCEPT, null, finalState.getId(), BigProductionGraph.END_MARKER);
		for (State<Item> state : this.getAutomaton().getStates()) {
			if (this.getAutomaton().isFinal(state))
				continue;
			GSet<Item> items = state.getValue();
			for (Item item : items)
				if (item.isComplete())
					for (Character symbol : item.getLookAhead())
						this.addAction(ActionType.REDUCE, this.getProductions().indexOf(item.getProduction()), state.getId(), symbol);
		}		
		for (Triple<State<Item>, Character, State<Item>> transition : this.getAutomaton().getAllTransitions()) {
			State<Item> sState = transition.getX();
			State<Item> dState = transition.getZ();
			Character symbol = transition.getY();
			if (this.getGrammar().getTerminals().contains(symbol))
				this.addAction(ActionType.SHIFT, dState.getId(), sState.getId(), symbol);
			if (this.getGrammar().getNonTerminals().contains(symbol))
				this.addAction(ActionType.GOTO, dState.getId(), sState.getId(), symbol);
		}
	}