public static void OBRADI_postfiks_izraz(boolean dajAdresu, boolean staviNaStog){
		String linija = mParser.ParsirajNovuLiniju();
		int trenLabela = mBrojacLabela++;
		
		if (linija.equals("<primarni_izraz>")){
			OBRADI_primarni_izraz(dajAdresu);
			return;
		}
		
		if (linija.equals("<postfiks_izraz>")){
			OBRADI_postfiks_izraz(true, true);
			linija = mParser.ParsirajNovuLiniju();
			UniformniZnak uz1 = new UniformniZnak(linija);
			
			// indeksiranje nizova
			if (uz1.mNaziv.equals("L_UGL_ZAGRADA")){
				linija = mParser.ParsirajNovuLiniju();	// ucitaj <izraz>
				OBRADI_izraz(true);
				linija = mParser.ParsirajNovuLiniju();	// D_UGL_ZAGRADA
				mIspisivac.DodajKod("POP R1", "indeksiranje niza: dohvati pomak");
				mIspisivac.DodajKod("POP R0", "indeksiranje niza: dohvati adresu adrese prvog clana");
				mIspisivac.DodajKod("LOAD R0, (R0)", "indeksiranje niza: dohvati adresu prvog clana");
				mIspisivac.DodajKod("ADD R0, 4, R0", "manje jumpova na ovaj nacin");
				mIspisivac.DodajKod("ADD R1, 1, R1", "manje jumpova na ovaj nacin");
				mIspisivac.PostaviSljedecuLabelu("IN_" + trenLabela);
				mIspisivac.DodajKod("SUB R0, 4, R0", "dodaj pomak");
				mIspisivac.DodajKod("SUB R1, 1, R1", "umanji broj pomaka za jedan");
				mIspisivac.DodajKod("JR_NZ IN_" + trenLabela,
						"dodaj jos pomaka ako je potrebno");
				if (staviNaStog){
					if (dajAdresu) mIspisivac.DodajKod("PUSH R0", "pushaj adresu clana");
					else{			
						mIspisivac.DodajKod("LOAD R1, (R0)", "dohvati clan");
						mIspisivac.DodajKod("PUSH R1", "pushaj clan");
					}
					// maknuli smo dva i stavili jedan pa je razlika sljedeca:
					NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
				}else{
					// maknuli smo dva pa je razlika sljedeca:
					NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
					NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
				}
				return;
			}
			
			// pozivi funkcija
			if (uz1.mNaziv.equals("L_ZAGRADA")){
				linija = mParser.ParsirajNovuLiniju();
				UniformniZnak uz2 = UniformniZnak.SigurnoStvaranje(linija);
				if (uz2 != null && uz2.mNaziv.equals("D_ZAGRADA")){ // void --> pov
					mIspisivac.DodajKod("POP R0", "dohvati adresu adrese funkcije");
					mIspisivac.DodajKod("LOAD R0, (R0)", "dohvati adresu funkcije");
					NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
					mIspisivac.DodajKod("CALL (R0)"); // pozovi adresu
					if (staviNaStog){
						mIspisivac.DodajKod("PUSH R6");
						Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
						novi.mIme = null;
						novi.mAdresa = false;
						novi.mVelicina = 4;
						NaredbenaStrukturaPrograma_G.mStog.add(novi);
					}
					return;
				}
				if (linija.equals("<lista_argumenata>")){ // lista_argumenata --> pov
					mIspisivac.DodajKod("POP R0", "dohvati adresu adrese funkcije");
					mIspisivac.DodajKod("LOAD R5, (R0)", "dohvati adresu funkcije");
					NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
					int broj_argumenata = OBRADI_lista_argumenata();
					linija = mParser.ParsirajNovuLiniju(); // ucitaj D_ZAGRADA	
					mIspisivac.DodajKod("CALL (R5)"); // pozovi adresu
					while(broj_argumenata-- != 0){ // makni sve stavljene argumente sa stoga
						mIspisivac.DodajKod("POP R0");
						NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
					}
					if (staviNaStog){
						mIspisivac.DodajKod("PUSH R6");
						Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
						novi.mIme = null;
						novi.mAdresa = false;
						novi.mVelicina = 4;
						NaredbenaStrukturaPrograma_G.mStog.add(novi);
					}
					return;
				}
			}
			
			// ++ i --
			if (uz1.mNaziv.equals("OP_INC") || uz1.mNaziv.equals("OP_DEC")){
				
				mIspisivac.DodajKod("POP R0", "postfiks izraz: dohvati adresu");
				NaredbenaStrukturaPrograma_G.mStog.remove(NaredbenaStrukturaPrograma_G.mStog.size()-1);
				mIspisivac.DodajKod("LOAD R1, (R0)", "postfiks izraz: dohvati vrijednost");
				if (uz1.mNaziv.equals("OP_DEC")) mIspisivac.DodajKod("SUB R1, 1, R2", "postfiks izraz: umanji za jedan");
				else mIspisivac.DodajKod("ADD R1, 1, R2", "postfiks izraz: uvecaj za jedan");
				mIspisivac.DodajKod("STORE R2, (R0)", "postfiks izraz: spremi");
				if (staviNaStog){
					mIspisivac.DodajKod("PUSH R1", "postfiks izraz: stavi rezultat na stog");
					Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
					novi.mIme = null;
					novi.mAdresa = false;
					novi.mVelicina = 4;
					NaredbenaStrukturaPrograma_G.mStog.add(novi);
				}
				return;
			}
		}
	}