Esempio n. 1
0
		public void Add(AreaListNode node)
		{
			if (count>=data.Length) Resize(data.Length*SymbolTableConstants.AreaList_ResizeParam);
			if (count==0) 
			{
				count++;
				data[0]=node;
				return;
			}
			if (data[count-1].Area<node.Area)
			{
				data[count]=node;
				count++;
				return;
			}
			int i=0;
			while (data[i].Area<node.Area) i++;
			if (data[i].Area==node.Area) 
			{
				data[i].InfoList.Add(node.InfoList[0]);
                //data[i].InfoList[0].Next = node.InfoList[0];
				return;
				//throw new Exception("ќшибка при добавлении области видимости к идентефикатору: така¤ область уже существует");
			}
			int k=i;
			for (i=count;i>=k+1;i--) data[i]=data[i-1];
			count++;
            data[i]=node;
		}
Esempio n. 2
0
		private void Resize(int new_size)
		{
			AreaListNode[] d=new AreaListNode[new_size];
			data.CopyTo(d,0);
			data=d;
		}