@Override
	public Object esegui() throws ExtraTokenException, OperazioneNonValidaException, ParentesiParsingException, OperandoMissingException, ParsingException, OperatoreMissingException
	{
		VarRepository variabili = VarRepository.getInstance();
		ArrayList<Token> lineaCodiceProvvisoria = (ArrayList<Token>)lineaCodice.clone();
		for(int j=0;j<lineaCodiceProvvisoria.size();j++)
			if(lineaCodiceProvvisoria.get(j).ritornaTipoToken().equals(Tok.VARIABILE))
			{
				String nome = (String)lineaCodiceProvvisoria.get(j).ritornaValore();
				Token valoreVariabile = variabili.getVariabile(nome);
				if(!valoreVariabile.equals(null))
					lineaCodiceProvvisoria.set(j, valoreVariabile);
			}
		if(lineaCodiceProvvisoria.size()==1)
			if(lineaCodiceProvvisoria.get(0).ritornaTipoToken().equals(Tok.STRINGA))
			{
				valoreVariabile = lineaCodiceProvvisoria.get(0);
				variabili.setVariabile(nomeVariabile, valoreVariabile);
				return null;
			}
		if(Condizione.isExprMatematica(lineaCodiceProvvisoria))
		{
			ExprMatematica em = new ExprMatematica(lineaCodiceProvvisoria);
			valoreVariabile = em.getRisultato();
		}
		else if(Condizione.isExprBooleana(lineaCodiceProvvisoria))
		{
			ExprBooleana eb = new ExprBooleana(lineaCodiceProvvisoria);
			valoreVariabile = eb.getRisultato();
		}
		else if(Condizione.isConfronto(lineaCodiceProvvisoria))
		{
			Condizione cond = new Condizione(lineaCodiceProvvisoria);
			valoreVariabile = cond.getRisultato();
		}
		else throw new ParsingException();
		variabili.setVariabile(nomeVariabile, valoreVariabile);
		return null;
	}