public static void OBRADI_unarni_izraz(boolean dajAdresu, boolean staviNaStog){
		String linija = mParser.ParsirajNovuLiniju();
		UniformniZnak uz = UniformniZnak.SigurnoStvaranje(linija);
		
		if (linija.equals("<postfiks_izraz>")){
			OBRADI_postfiks_izraz(dajAdresu, staviNaStog);
			return;
		}
		
		if (uz != null && (uz.mNaziv.equals("OP_DEC") || uz.mNaziv.equals("OP_INC"))){
			linija = mParser.ParsirajNovuLiniju();	// ucitaj <unarni_izraz>
			OBRADI_unarni_izraz(true, false); // samo prvi rekurzivni poziv moze na stog stavit
			mIspisivac.DodajKod("POP R0", "unarni izraz: dohvati adresu");
			NaredbenaStrukturaPrograma.mStog.remove(NaredbenaStrukturaPrograma.mStog.size()-1);
			mIspisivac.DodajKod("LOAD R1, (R0)", "unarni izraz: dohvati vrijednost");
			if (uz.mNaziv.equals("OP_DEC")) mIspisivac.DodajKod("SUB R1, 1, R1", "unarni izraz: umanji za jedan");
			else mIspisivac.DodajKod("ADD R1, 1, R1", "unarni izraz: uvecaj za jedan");
			mIspisivac.DodajKod("STORE R1, (R0)", "unarni izraz: spremi");
			if (staviNaStog){
				mIspisivac.DodajKod("PUSH R1", "unarni izraz: stavi rezultat na stog");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = false;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(novi);
			}
			return;
		}
		
		if (linija.equals("<unarni_operator>")){
			linija = mParser.ParsirajNovuLiniju(); // ucitaj (PLUS | MINUS | OP_TILDA | OP_NEG)
			UniformniZnak znakOp = UniformniZnak.SigurnoStvaranje(linija);
			linija = mParser.ParsirajNovuLiniju();	// ucitaj <cast_izraz>
			OBRADI_cast_izraz(staviNaStog);
			
			if (znakOp.mNaziv.equals("PLUS")){
				// netreba nista napravit ;)
				return;
			}else if (znakOp.mNaziv.equals("MINUS")){
				if (NaredbenaStrukturaPrograma.mStog != null){ // u lokalnom djelokrugu
					mIspisivac.DodajKod("POP R0", "unarni operator MINUS: dohvati vrijednost");
					mIspisivac.DodajKod("XOR R0, -1, R0");
					mIspisivac.DodajKod("ADD R0, 1, R0");
					mIspisivac.DodajKod("PUSH R0", "unarni operator MINUS: spremi novu vrijednost");
					return;
				}else{ // u globalnom djelokrugu
					mIspisivac.DodajPreMainKod("POP R0", "unarni operator MINUS: dohvati vrijednost");
					mIspisivac.DodajPreMainKod("XOR R0, -1, R0");
					mIspisivac.DodajPreMainKod("ADD R0, 1, R0");
					mIspisivac.DodajPreMainKod("PUSH R0", "unarni operator MINUS: spremi novu vrijednost");
					return;
				}
			}else if (znakOp.mNaziv.equals("OP_TILDA")){
				if (NaredbenaStrukturaPrograma.mStog != null){ // u lokalnom djelokrugu
					mIspisivac.DodajKod("POP R0", "unarni operator OP_TILDA: dohvati vrijednost");
					mIspisivac.DodajKod("XOR R0, -1, R0");
					mIspisivac.DodajKod("PUSH R0", "unarni operator OP_TILDA: spremi novu vrijednost");
					return;
				}else{ // u globalnom djelokrugu
					mIspisivac.DodajPreMainKod("POP R0", "unarni operator OP_TILDA: dohvati vrijednost");
					mIspisivac.DodajPreMainKod("XOR R0, -1, R0");
					mIspisivac.DodajPreMainKod("PUSH R0", "unarni operator OP_TILDA: spremi novu vrijednost");
					return;
				}
			}else if (znakOp.mNaziv.equals("OP_NEG")){
				if (NaredbenaStrukturaPrograma.mStog != null){ // u lokalnom djelokrugu
					mIspisivac.DodajKod("POP R0", "unarni operator OP_NEG: dohvati vrijednost");
					mIspisivac.DodajKod("CMP R0, 0");
					mIspisivac.DodajKod("JR_NE 12", "preskoci postavljanje vrijednosti na jedan");
					mIspisivac.DodajKod("MOVE %D 1, R0");
					mIspisivac.DodajKod("JR 8", "preskoci postavljanje vrijednosti na nulu");
					mIspisivac.DodajKod("MOVE %D 0, R0");
					mIspisivac.DodajKod("PUSH R0", "unarni operator OP_NEG: spremi novu vrijednost");
					return;
				}else{ // u globalnom djelokrugu
					mIspisivac.DodajPreMainKod("POP R0", "unarni operator OP_NEG: dohvati vrijednost");
					mIspisivac.DodajPreMainKod("CMP R0, 0");
					mIspisivac.DodajPreMainKod("JR_NE 12", "preskoci postavljanje vrijednosti na jedan");
					mIspisivac.DodajPreMainKod("MOVE %D 1, R0");
					mIspisivac.DodajPreMainKod("JR 8", "preskoci postavljanje vrijednosti na nulu");
					mIspisivac.DodajPreMainKod("MOVE %D 0, R0");
					mIspisivac.DodajPreMainKod("PUSH R0", "unarni operator OP_NEG: spremi novu vrijednost");
					return;
				}
			}
		}
	}