public SimboloBasico Insere2Saida(ListaSimbolo _lstSB) { int _indiceSimbolo = 0; int _subt2posicionaSimboloInserido = 0; switch (saida.Count) { case 0: /// case 0: Primeiro simbolo na saida, adiciona apenas um /// simbolo na saida _indiceSimbolo = 0; if (_lstSB.Count > 1) { _lstSB.InsereParalelo(ListaSimbolo.TipoInsercaoParalelo.PARALELO_COMPLETO); _subt2posicionaSimboloInserido = -1; } break; case 1: /// case 1: Caso ja exista 1 (um) simbolo de saida, insere um /// paralelo de forma automatica // aqui 0=antes, 1=depois if (_indiceSimbolo == 0) { /// prepara para inserir antes do objeto atual _lstSB.InsereParalelo(ListaSimbolo.TipoInsercaoParalelo.PARALELO_INICIADO); /// insere PP antes do objeto atual na linha this.saida.Insert(0, new SimboloBasico(CodigosInterpretaveis.PARALELO_PROXIMO)); //InsereSimboloUnicoVisual(0, this.saida, new SimboloBasico(CodigosInterpretaveis.PARALELO_PROXIMO)); /// insere PF depois do objeto atual da linha this.saida.Insert(this.saida.Count, new SimboloBasico(CodigosInterpretaveis.PARALELO_FINAL)); //InsereSimboloUnicoVisual(this.saida.Count, this.saida, new SimboloBasico(CodigosInterpretaveis.PARALELO_FINAL)); } else { _lstSB.InsereParalelo(ListaSimbolo.TipoInsercaoParalelo.PARALELO_FINALIZADO); _subt2posicionaSimboloInserido = -1; this.saida.Insert(0, new SimboloBasico(CodigosInterpretaveis.PARALELO_INICIAL)); //InsereSimboloUnicoVisual(0, this.saida, new SimboloBasico(CodigosInterpretaveis.PARALELO_INICIAL)); _indiceSimbolo++; } break; default: switch (this.saida[_indiceSimbolo].getCI()) { case CodigosInterpretaveis.PARALELO_INICIAL: _lstSB.InsereParalelo(ListaSimbolo.TipoInsercaoParalelo.PARALELO_INICIADO); this.saida[0].setCI(CodigosInterpretaveis.PARALELO_PROXIMO); //this.saida[0].setCI(CodigosInterpretaveis.PARALELO_PROXIMO); break; case CodigosInterpretaveis.PARALELO_PROXIMO: _lstSB.InsereParaleloProximo(); break; case CodigosInterpretaveis.PARALELO_FINAL: _lstSB.InsereParaleloProximo(); break; default: _lstSB.InsereParaleloProximo(); _indiceSimbolo++; break; } break; } foreach (SimboloBasico _sb in _lstSB) { this.saida.Insert(_indiceSimbolo, _sb); //InsereSimboloUnicoVisual(_indiceSimbolo, this.saida, _sb); _indiceSimbolo++; } /// retorna o ultimo objeto inserido return(this.saida[_indiceSimbolo - 1 + _subt2posicionaSimboloInserido]); }