public static void OBRADI_primarni_izraz(boolean dajAdresu){
		mZadnjiPrimarniIzrazJe_NIZ_ZNAKOVA = false;
		String linija = mParser.ParsirajNovuLiniju();
		UniformniZnak uz = new UniformniZnak(linija);
		int trenLabela = mBrojacLabela++;
		
		if (uz.mNaziv.equals("IDN")){
			if (NaredbenaStrukturaPrograma.mStog != null){ // jesmo li u globalnom djelokrugu ili u funkciji
				int i = NaredbenaStrukturaPrograma.PretraziIme_Lok(uz.mLeksickaJedinka);
				if (i == -1){ // trazena varijabla mora biti u globalnom djelokrugu
					i = NaredbenaStrukturaPrograma.PretraziIme_Glo(uz.mLeksickaJedinka);
					if(dajAdresu) mIspisivac.DodajKod("MOVE G_" + uz.mLeksickaJedinka.toUpperCase() + ", R0", "dohvacam adresu " + uz.mLeksickaJedinka);
					else mIspisivac.DodajKod("LOAD R0, (G_" + uz.mLeksickaJedinka.toUpperCase() + ")", "dohvacam " + uz.mLeksickaJedinka);
					mIspisivac.DodajKod("PUSH R0");
					Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
					novi.mIme = null;
					novi.mAdresa = NaredbenaStrukturaPrograma.mGlobalniDjelokrug.get(i).mAdresa;
					novi.mVelicina = NaredbenaStrukturaPrograma.mGlobalniDjelokrug.get(i).mVelicina;
					NaredbenaStrukturaPrograma.mStog.add(novi);
				}else{ // trazena varijabla je u lokalnom djelokrugu
					int dubina = NaredbenaStrukturaPrograma.DajDubinuOdVrhaStoga(i);
					if(dajAdresu){
						mIspisivac.DodajKod("PUSH R7", "(korak 1) dohvacam adresu: " + uz.mLeksickaJedinka);
						mIspisivac.DodajKod("POP R0", "(korak 2) dohvacam adresu: " + uz.mLeksickaJedinka);
						mIspisivac.DodajKod("ADD R0, 4, R0", "(korak 3) dohvacam adresu: " + uz.mLeksickaJedinka);
						mIspisivac.DodajKod("ADD R0, " + dubina + ", R0", "(korak 4) dohvacam adresu: " + uz.mLeksickaJedinka);
					}
					else mIspisivac.DodajKod("LOAD R0, (R7+" + dubina + ")", "dohvacam " + uz.mLeksickaJedinka);
					mIspisivac.DodajKod("PUSH R0");
					Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
					novi.mIme = null;
					novi.mAdresa = NaredbenaStrukturaPrograma.mStog.get(i).mAdresa;
					novi.mVelicina = NaredbenaStrukturaPrograma.mStog.get(i).mVelicina;
					NaredbenaStrukturaPrograma.mStog.add(novi);
				}
				return;
			}else{
				// trazena varijabla mora biti u globalnom djelokrugu ako je i trenutno analizirani dio koda
				int i = NaredbenaStrukturaPrograma.PretraziIme_Glo(uz.mLeksickaJedinka);
				if(dajAdresu) mIspisivac.DodajPreMainKod("MOVE G_" + uz.mLeksickaJedinka.toUpperCase() + ", R0", "dohvacam adresu " + uz.mLeksickaJedinka);
				else mIspisivac.DodajPreMainKod("LOAD R0, (G_" + uz.mLeksickaJedinka.toUpperCase() + ")", "dohvacam " + uz.mLeksickaJedinka);
				mIspisivac.DodajPreMainKod("PUSH R0");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = NaredbenaStrukturaPrograma.mGlobalniDjelokrug.get(i).mAdresa;
				novi.mVelicina = NaredbenaStrukturaPrograma.mGlobalniDjelokrug.get(i).mVelicina;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(novi);
				return;
			}
		}
		
		if (uz.mNaziv.equals("BROJ")){
			int baza = Utilities.VratiBazu(uz.mLeksickaJedinka);
			int broj = Integer.parseInt(uz.mLeksickaJedinka, baza);
			if (NaredbenaStrukturaPrograma.mStog != null){ // jesmo li u globalnom djelokrugu ili u funkciji
				if (broj > 524287 || broj < -524287){
					mIspisivac.DodajGlobalnuVarijablu("TEMP_" + trenLabela, "DW %D " + broj);
					mIspisivac.DodajKod("LOAD R0, (TEMP_" + trenLabela + ")");
					mIspisivac.DodajKod("PUSH R0");
				}
				else{
					mIspisivac.DodajKod("MOVE %D " + uz.mLeksickaJedinka + ", R0");
					mIspisivac.DodajKod("PUSH R0");
				}
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = false;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(novi);
				return;
			}else{
				if (broj > 524287 || broj < -524287){
					mIspisivac.DodajGlobalnuVarijablu("TEMP_" + trenLabela, "DW %D " + broj);
					mIspisivac.DodajPreMainKod("LOAD R0, (TEMP_" + trenLabela + ")");
					mIspisivac.DodajPreMainKod("PUSH R0");
				}
				else{
					mIspisivac.DodajPreMainKod("MOVE %D " + uz.mLeksickaJedinka + ", R0");
					mIspisivac.DodajPreMainKod("PUSH R0");
				}
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = false;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(novi);
				return;
			}
		}
		
		if (uz.mNaziv.equals("ZNAK")){
			int broj = Utilities.PretvoriCharUInt(uz.mLeksickaJedinka);
			if (NaredbenaStrukturaPrograma.mStog != null){ // jesmo li u globalnom djelokrugu ili u funkciji
				mIspisivac.DodajKod("MOVE %D " + broj + ", R0");
				mIspisivac.DodajKod("PUSH R0");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = false;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(novi);
				return;
			}else{
				mIspisivac.DodajPreMainKod("MOVE %D " + broj + ", R0");
				mIspisivac.DodajPreMainKod("PUSH R0");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = null;
				novi.mAdresa = false;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(novi);
				return;
			}
		}
		
		if (uz.mNaziv.equals("NIZ_ZNAKOVA")){
			mZadnjiPrimarniIzrazJe_NIZ_ZNAKOVA = true;
			List<Character> niz = Utilities.VratiZnakoveIz_NIZ_ZNAKOVA(uz.mLeksickaJedinka);
			mDuljina_NIZ_ZNAKOVA = niz.size();
			
			if (NaredbenaStrukturaPrograma.mStog != null){ // jesmo li u globalnom djelokrugu ili u funkciji
				for (int i = 0; i < niz.size(); ++i){
					mIspisivac.DodajKod("MOVE %D " + (int)niz.get(i) + ", R0", "inicijalizacija znakovnog niza");
					mIspisivac.DodajKod("PUSH R0", "inicijalizacija znakovnog niza");
					Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
					novi.mIme = null;
					novi.mAdresa = false;
					novi.mVelicina = 4;
					NaredbenaStrukturaPrograma.mStog.add(novi);
				}
			}else{
				for (int i = 0; i < niz.size(); ++i){
					mIspisivac.DodajPreMainKod("MOVE %D " + (int)niz.get(i) + ", R0", "inicijalizacija znakovnog niza");
					mIspisivac.DodajPreMainKod("PUSH R0", "inicijalizacija znakovnog niza");
					Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
					novi.mIme = null;
					novi.mAdresa = false;
					novi.mVelicina = 4;
					NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(novi);
				}
			}
			return;
		}
		
		if (uz.mNaziv.equals("L_ZAGRADA")){
			linija = mParser.ParsirajNovuLiniju();	// ucitaj <izraz>
			OBRADI_izraz(true);
			linija = mParser.ParsirajNovuLiniju();	// ucitaj D_ZAGRADA
			return;
		}
	}