public static Tip_LIzraz_Const_Niz PROVJERI_postfiks_izraz(){
		String linija = mParser.ParsirajNovuLiniju();
		Tip_LIzraz_Const_Niz vrati = new Tip_LIzraz_Const_Niz();
		
		if (linija.equals("<primarni_izraz>")){
			vrati = PROVJERI_primarni_izraz();
			return vrati;
		}
		
		if (linija.equals("<postfiks_izraz>")){
			Tip_LIzraz_Const_Niz postfiks_izraz = PROVJERI_postfiks_izraz();
			linija = mParser.ParsirajNovuLiniju();
			UniformniZnak uz1 = new UniformniZnak(linija);
			
			// indeksiranje nizova
			if (uz1.mNaziv.equals("L_UGL_ZAGRADA")){
				Boolean outputEnabledWasTrue = Utilities.mWriteToOutputEnabled;
				Boolean postfiks_izraz_jeOK = true;
				if ((postfiks_izraz.mTip != Tip._int && postfiks_izraz.mTip != Tip._char) || !postfiks_izraz.mNiz) {
					postfiks_izraz_jeOK = false;
					Utilities.mWriteToOutputEnabled = false; // so that PROVJERI_izraz(); does not output anything
				}			
				
				linija = mParser.ParsirajNovuLiniju();	// ucitaj <izraz>
				Tip_LIzraz_Const_Niz izraz = PROVJERI_izraz();
				linija = mParser.ParsirajNovuLiniju();	// D_UGL_ZAGRADA
				UniformniZnak uz2 = new UniformniZnak(linija);
				if (outputEnabledWasTrue) Utilities.mWriteToOutputEnabled = true; // set to true only if it is here that it was set to false (not in a recursive call)
				if (!Utilities.ImplicitnaPretvorbaMoguca(izraz.mTip, Tip._int) || izraz.mNiz || !postfiks_izraz_jeOK){
					String greska = "<postfiks_izraz> ::= <postfiks_izraz> " + uz1.FormatZaIspis() +
									" <izraz> " + uz2.FormatZaIspis();
					Utilities.WriteStringLineToOutputAndExit(greska);
				}
				vrati.mTip = postfiks_izraz.mTip;
				vrati.mL_izraz = !postfiks_izraz.mConst;
				vrati.mConst = postfiks_izraz.mConst;
				vrati.mNiz = false;
				return vrati;
			}
			
			// 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
					if(postfiks_izraz.mTip != Tip._funkcija || postfiks_izraz.mFun == null || postfiks_izraz.mFun.mParam.size() != 0){
						String greska = "<postfiks_izraz> ::= <postfiks_izraz> " + uz1.FormatZaIspis() +
								" " + uz2.FormatZaIspis();
						Utilities.WriteStringLineToOutputAndExit(greska);
					}
					vrati.mTip = postfiks_izraz.mFun.mPov;
					vrati.mL_izraz = false;
					vrati.mConst = false;
					vrati.mNiz = false;
					return vrati;
				}
				if (linija.equals("<lista_argumenata>")){ // lista_argumenata --> pov
					List<Tip_LIzraz_Const_Niz> lista_argumenata = PROVJERI_lista_argumenata();
					linija = mParser.ParsirajNovuLiniju(); // ucitaj D_ZAGRADA
					uz2 = UniformniZnak.SigurnoStvaranje(linija);
					
					Boolean arg_Par_OK = true;
					if (postfiks_izraz.mTip == Tip._funkcija && postfiks_izraz.mFun.mParam.size() == lista_argumenata.size()){
						for (int i = 0; i < lista_argumenata.size(); ++i) 
							if (!Utilities.ImplicitnaPretvorbaMoguca(lista_argumenata.get(i).mTip, postfiks_izraz.mFun.mParam.get(i).mTip) ||
									(lista_argumenata.get(i).mNiz != postfiks_izraz.mFun.mParam.get(i).mNiz) ||
									(lista_argumenata.get(i).mConst && !postfiks_izraz.mFun.mParam.get(i).mConst && lista_argumenata.get(i).mNiz)) // nemoguca pretvorba sa `niz(const char)` u `niz(char)`
								arg_Par_OK = false;
					}else arg_Par_OK = false;
					
					if(postfiks_izraz.mTip != Tip._funkcija || postfiks_izraz.mFun == null || postfiks_izraz.mFun.mParam.size() == 0 || !arg_Par_OK){						
						String greska = "<postfiks_izraz> ::= <postfiks_izraz> " + uz1.FormatZaIspis() +
								" <lista_argumenata> " + uz2.FormatZaIspis();
						Utilities.WriteStringLineToOutputAndExit(greska);
					}
					vrati.mTip = postfiks_izraz.mFun.mPov;
					vrati.mL_izraz = false;
					vrati.mConst = false;
					vrati.mNiz = false;
					return vrati;
				}
			}
			
			// ++ i --
			if (uz1.mNaziv.equals("OP_INC") || uz1.mNaziv.equals("OP_DEC")){
				if (!postfiks_izraz.mL_izraz || postfiks_izraz.mNiz || !Utilities.ImplicitnaPretvorbaMoguca(postfiks_izraz.mTip, Tip._int)){
					String greska = "<postfiks_izraz> ::= <postfiks_izraz> " + uz1.FormatZaIspis();
					Utilities.WriteStringLineToOutputAndExit(greska);
				}
				vrati.mTip = Tip._int;
				vrati.mL_izraz = false;
				vrati.mConst = false;
				vrati.mNiz = false;
				return vrati;
			}
		}
		
		return null;
	}