public static Ime_Velicina_Adresa OBRADI_izravni_deklarator(int trenutacnaLabela){
		String linija = mParser.ParsirajNovuLiniju(); // ucitaj IDN
		UniformniZnak uz_idn = UniformniZnak.SigurnoStvaranje(linija);
		
		linija = mParser.DohvatiProviriVrijednost();
		UniformniZnak uz_1 = UniformniZnak.SigurnoStvaranje(linija);
		if (uz_1.mNaziv.equals("L_UGL_ZAGRADA")){ // <<<< deklariranje nizova >>>>
			linija = mParser.ParsirajNovuLiniju(); // ucitaj L_UGL_ZAGRADA
			linija = mParser.ParsirajNovuLiniju(); // ucitaj BROJ
			UniformniZnak uz_broj = UniformniZnak.SigurnoStvaranje(linija);
			int broj = Integer.parseInt(uz_broj.mLeksickaJedinka);
			linija = mParser.ParsirajNovuLiniju(); // ucitaj D_UGL_ZAGRADA
			
			// neznamo dali ce biti pridruzena vrijednost pri deklaraciji pa inicijaliziramo cijelo polje na nulu
			if (NaredbenaStrukturaPrograma.mStog == null){ // u globalnom smo djelokrugu
				for (int i = 0; i < broj; ++i){
					mIspisivac.DodajGlobalnuVarijablu("TEMP_" + (trenutacnaLabela + i), "DW %D 0");
				}
				mIspisivac.DodajPreMainKod("MOVE TEMP_" + (trenutacnaLabela + broj - 1) + ", R0", "inicijalizacija polja: spremanje adrese pocetnog clana");
				mIspisivac.DodajPreMainKod("PUSH R0");
				Ime_Velicina_Adresa vrati = new Ime_Velicina_Adresa();
				vrati.mIme = uz_idn.mLeksickaJedinka;
				vrati.mAdresa = true;
				vrati.mVelicina = 4;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(vrati);
				return vrati;
			}else{ // u lokalnom smo djelokrugu
				mIspisivac.DodajKod("MOVE %D 0, R0", "inicijaliziraj polje na nulu");
				for (int i = 0; i < broj; ++i){
					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);
				}
				mIspisivac.DodajKod("PUSH R7", "inicijalizacija polja: dohvati adr zadnjeg clana na vrhu stoga (korak 1)");
				mIspisivac.DodajKod("POP R0", "inicijalizacija polja: dohvati adr zadnjeg clana na vrhu stoga (korak 2)");
				mIspisivac.DodajKod("ADD R0, 4, R0", "inicijalizacija polja: dohvati adr zadnjeg clana na vrhu stoga (korak 3)");
				mIspisivac.DodajKod("ADD R0, " + 4*broj + ", R0",
						"inicijalizacija polja: dohvati adr prvog clana");
				mIspisivac.DodajKod("PUSH R0", "inicijalizacija polja: stavi je na stog");
				Ime_Velicina_Adresa vrati = new Ime_Velicina_Adresa();
				vrati.mIme = uz_idn.mLeksickaJedinka;
				vrati.mAdresa = true;
				vrati.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(vrati);
				return vrati;
			}
		}
		
		else if (uz_1.mNaziv.equals("L_ZAGRADA")){ // <<<<< deklaracije funkcija >>>>>
			linija = mParser.ParsirajNovuLiniju(); // ucitaj L_ZAGRADA
			linija = mParser.ParsirajNovuLiniju();
			if (linija.equals("<lista_parametara>")){ // -------- funkcija sa parametrima --------
				OBRADI_lista_parametara();
				linija = mParser.ParsirajNovuLiniju(); // ucitaj D_ZAGRADA 
			}
			else{ // --------- funkcija bez parametara ----------
				linija = mParser.ParsirajNovuLiniju(); // ucitaj D_ZAGRADA 
			}
			
			if (NaredbenaStrukturaPrograma.mStog == null){ // u globalnom smo djelokrugu
				mIspisivac.DodajPreMainKod("MOVE F_" + uz_idn.mLeksickaJedinka.toUpperCase() + ", R0",
						"deklaracija funkcije " + uz_idn.mLeksickaJedinka);
				mIspisivac.DodajPreMainKod("PUSH R0");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = uz_idn.mLeksickaJedinka;
				novi.mAdresa = true;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(novi);
				return novi;
			}else{ // u lokalnom smo djelokrugu
				mIspisivac.DodajKod("MOVE F_" + uz_idn.mLeksickaJedinka.toUpperCase() + ", R0",
						"deklaracija funkcije " + uz_idn.mLeksickaJedinka);
				mIspisivac.DodajKod("PUSH R0");
				Ime_Velicina_Adresa novi = new Ime_Velicina_Adresa();
				novi.mIme = uz_idn.mLeksickaJedinka;
				novi.mAdresa = true;
				novi.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(novi);
				return novi;
			}
		}
		
		else{ // <<<<<generiranje varijabli cjelobrojnog tipa>>>>>
			if (NaredbenaStrukturaPrograma.mStog != null){ // jesmo li u globalnom djelokrugu ili u funkciji
				mIspisivac.DodajKod("MOVE %D 0, R0", "izravni deklarator cijelobrojne varijable: postavi na nulu");
				mIspisivac.DodajKod("PUSH R0");
				Ime_Velicina_Adresa vrati = new Ime_Velicina_Adresa();
				vrati.mIme = uz_idn.mLeksickaJedinka;
				vrati.mAdresa = false;
				vrati.mVelicina = 4;
				NaredbenaStrukturaPrograma.mStog.add(vrati);
				return vrati;
			}else{
				mIspisivac.DodajPreMainKod("MOVE %D 0, R0", "izravni deklarator cijelobrojne varijable: postavi na nulu");
				mIspisivac.DodajPreMainKod("PUSH R0");
				Ime_Velicina_Adresa vrati = new Ime_Velicina_Adresa();
				vrati.mIme = uz_idn.mLeksickaJedinka;
				vrati.mAdresa = false;
				vrati.mVelicina = 4;
				NaredbenaStrukturaPrograma.mGlobalniDjelokrug.add(vrati);
				return vrati;
			}
		}
	}