def def_code_generate(self):
		generated_code = []
		generated_code.append("def "+self.sign+"()")
		generated_code.append("\tcase @token")

		epsilon_flag = False
		for row in self.analized_data:
			
			if row[0] != nonToken.epsilon_symbol:
				frst = []
				if row[0] != nonToken.repete_start_symbol:
					row[0].get_first(frst)
				else:
					row[1].get_first(frst)

				code = "\twhen " + ",".join(frst)
				generated_code.append(code)
	
				for i, col in enumerate(row):
					if Token.is_generated(col.get_sign()):
						code = "\t\tchecktoken(\"" + self.sign + "\", " + col.get_entity() + ")"
					elif nonToken.is_generated(col.get_sign()):
						code = "\t\t" + col.get_sign() + "()"
					elif col == nonToken.repete_start_symbol:
			
						if Token.is_generated(row[i+1].get_sign()):
							code = "\t\twhile @token == " + row[i+1].get_entity() + " do"
						elif nonToken.is_generated(row[i+1].get_sign()):
			
							frst = []
							row[i+1].get_first(frst)
							code = "\t\twhile "
							for ft in frst:
								code += "@token == " + ft + " || "
							code = code[:-3] + "do"
							 
					elif col == nonToken.repete_end_symbol:
						code = "\t\tend"
					generated_code.append(code)
			else:
				epsilon_flag = True
	
		if epsilon_flag:
			generated_code.append("\telse")
		else:
			generated_code.append("\telse")
			generated_code.append("\t\tputs \"error\"")
			generated_code.append("\t\texit(1)")
				
		generated_code.append("\tend")
		generated_code.append("end")
		
		return generated_code
	def analize(self, grammars):
		self.analized_data = []
	
		for i, grammar in enumerate(grammars):
		
			if grammar == '':
				continue
			self.analized_data.append([])
				
			for unit in grammar:
				# if "unit" is already generated in Token, 
				if Token.is_generated(unit):
					rtn = Token.return_token(unit)
				# if already generated in Non-Token, 
				elif nonToken.is_generated(unit):
					rtn = nonToken.return_token(unit)
				elif unit == nonToken.repete_start_symbol.get_sign():
					rtn = nonToken.repete_start_symbol
				elif unit == nonToken.repete_end_symbol.get_sign():
					rtn = nonToken.repete_end_symbol
				elif unit == nonToken.epsilon_symbol.get_sign():
					rtn = nonToken.epsilon_symbol
				else:
					print u"Error! Token or Non-Token excepted !"
					print unit
					
				self.analized_data[i].append(rtn)