public ArrayList<Producao> concatenaProducoes(ProducoesForParser linhaColuna, ProducoesForParser LinhaColunaAnt) throws Exception{

		try{

			ArrayList<Producao> concatenados = new ArrayList<Producao>();

			if(!(linhaColuna.getProducoes().isEmpty())  &&  !(LinhaColunaAnt.getProducoes().isEmpty())){//Se ninguem for vazio
				//Percorre lista de nao terminais da linhacoluna
				for(NaoTerminal ntLC : linhaColuna.getProducoes()){
					//Percorre lista de não terminais da Linha ColunaAnterior
					for(NaoTerminal ntLCAnt : LinhaColunaAnt.getProducoes()){

						Producao prodConcat = new Producao();

						String parse;
						//Concatena Nao terminais
						parse = concatenaTransacaoVazia(ntLC.getNaoTerminais(), ntLCAnt.getNaoTerminais());
						//Concatenação vira produção
						prodConcat.setProducao(parse);
						concatenados.add(prodConcat);
					}

				}
			}else
				//Se linhaColuna nao for vazio
				if(!(linhaColuna.getProducoes().isEmpty())){

					for(NaoTerminal ntLC : linhaColuna.getProducoes()){

						Producao prodConcat = new Producao(); //Nao terminais viram produções

						String parse;
						parse = concatenaTransacaoVazia(ntLC.getNaoTerminais(), TransacaoVazia);

						prodConcat.setProducao(parse);
						concatenados.add(prodConcat);

					}


				}else
					//Se linhaColunaAnterior não for vazio
					if(!(LinhaColunaAnt.getProducoes().isEmpty())){

						for(NaoTerminal ntLCAnt : LinhaColunaAnt.getProducoes()){
							Producao prodConcat = new Producao(); //Nao terminais viram produções

							String parse;

							parse = concatenaTransacaoVazia(ntLCAnt.getNaoTerminais(), TransacaoVazia);

							prodConcat.setProducao(parse);
							concatenados.add(prodConcat);
						}
					}

			return concatenados;

		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			throw new Exception("Erro: nao foi possivel concatenar");
		}

	}