⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tools.cs

📁 这是一个完整的文法分析器
💻 CS
字号:
using System;
using System.Collections;

namespace SimpleLL1
{
	/// <summary>
	/// Tools 的摘要说明。
	/// </summary>
	public class Tools
	{

		#region 检测给定的object对象是否是Queue的一个元素
		/// <summary>
		/// 检测给定的object对象是否是ArrayList的一个元素
		/// </summary>
		/// <param name="obj">给定的object对象</param>
		/// <param name="que">指定的ArrayList</param>
		/// <returns>bool</returns>
		public static bool IsInQueue(object obj,Queue que)
		{
			IEnumerator myEnumerator = que.GetEnumerator();
			while ( myEnumerator.MoveNext())
				if(obj.Equals(myEnumerator.Current))
					return true;
			
			return false;

		}
		#endregion
		
		#region 检测给定的object对象是否是ArrayList的一个元素
		/// <summary>
		/// 检测给定的object对象是否是ArrayList的一个元素
		/// </summary>
		/// <param name="obj"></param>
		/// <param name="arylst"></param>
		/// <returns>bool</returns>
		public static bool IsInList(object obj,ArrayList arylst)
		{
			IEnumerator myEnumerator = arylst.GetEnumerator();
			while ( myEnumerator.MoveNext())
				if(obj.Equals(myEnumerator.Current))
					return true;
			
			return false;

		}
		#endregion

		#region 把arylst2接到arylst1后面
		/// <summary>
		/// 把arylst2接到arylst1后面
		/// </summary>
		/// <param name="arylst1"></param>
		/// <param name="arylst2"></param>
		/// <returns>ArrayList</returns>
		public static ArrayList AddArrayList(ArrayList arylst1,ArrayList arylst2)
		{
			IEnumerator myEnumerator = arylst2.GetEnumerator();
			while ( myEnumerator.MoveNext())
			{
				if(!IsInList(myEnumerator.Current,arylst1))
					arylst1.Add(myEnumerator.Current);
			}
			return arylst1;
		}

		#endregion

		#region 检测string型的一个对象的指定部分是否是Queue的某个元素的某部分
		/// <summary>
		/// 检测string型的一个元素的指定部分是否是Queue的某个元素的某部分
		/// </summary>
		/// <param name="strElement">待检测的string对象</param>
		/// <param name="iStartIndex">开始位置</param>
		/// <param name="iLength">长度</param>
		/// <param name="que">指定的队列</param>
		/// <returns>bool</returns>
		public static bool IsQueueElement(string strElement,int iStartIndex,int iLength,Queue que)
		{
			IEnumerator myEnumerator =que.GetEnumerator();
			while ( myEnumerator.MoveNext())
			{
				if(myEnumerator.Current.ToString().Substring(iStartIndex,iLength)==strElement)
					return true;
			}
			return false;
		}
				#endregion

		#region 把ArrayList转换为ArrayList数组
		/// <summary>
		/// 把ArrayList转换为ArrayList数组
		/// </summary>
		/// <param name="ary">要转换的ArrayList</param>
		/// <returns>ArrayList []</returns>
		public static ArrayList [] ConvertToArray(ArrayList ary)
		{
			ArrayList [] arylst =new ArrayList[ary.Count];
			int i=0;
			IEnumerator myEnumerator =  ary.GetEnumerator();
			while ( myEnumerator.MoveNext())
			{	
				arylst[i]=(ArrayList)myEnumerator.Current;
				i++;
			}
			return arylst;
		}
		#endregion

		#region 以字符串形式返回ArrayList的每一个元素
		/// <summary>
		/// 以字符串形式返回ArrayList的每一个元素
		/// </summary>
		/// <param name="arylst">要输出的ArrayList</param>
		/// <returns>返回字符串</returns>
		public static string getArrayString(ArrayList arylst)
		{
			string strReturn="";
			IEnumerator myEnumerator = arylst.GetEnumerator();
			while ( myEnumerator.MoveNext())
			{
				strReturn+=myEnumerator.Current.ToString() + " ";
			}
			//Console.WriteLine(strReturn);
			return strReturn.Trim();
		}
		#endregion

		#region 检测字符串中是否每一个字符都是非终结符
		/// <summary>
		/// 检测字符串中是否每一个字符都是非终结符
		/// </summary>
		/// <param name="strProduct">要检测的字符串</param>
		/// <returns>bool</returns>
		public static bool IsAllNotEnd(string strProduct)
		{
			for(int i=0 ; i< strProduct.Length ; i++)
			{
				if(SymbolSet.getInstance().IsInNotEndSet(strProduct.Substring(i,1))==false)
				{	
					return false;
				}
			}
			return true;
		}

		#endregion

		#region 检测多个ArrayList是否含有相同元素
		/// <summary>
		/// 检测多个ArrayList是否含有相同元素
		/// </summary>
		/// <param name="arylst">ArrayList的数组</param>
		/// <returns>bool</returns>
		public static bool hasSameElement(ArrayList []arylst)
		{
			ArrayList arylstTemp=new ArrayList();
			for(int i=0 ; i<arylst.Length ; i++ )
			{
				IEnumerator myEnumerator = arylst[i].GetEnumerator();
				while ( myEnumerator.MoveNext())
				{
					if(IsInList(myEnumerator.Current,arylstTemp))
						return true;
					else
						arylstTemp.Add(myEnumerator.Current);
				}
			}

			return false;
		}

		#endregion

		#region 以字符串形式返回栈的所有元素从栈顶到栈低
		/// <summary>
		/// 以字符串形式返回栈的所有元素从栈顶到栈低
		/// </summary>
		/// <param name="stack">要处理的栈</param>
		/// <returns>字符串</returns>
		public static string getStackStringTB(Stack stack)
		{
			string strStack="";
			IEnumerator myEnumerator = stack.GetEnumerator();
			while ( myEnumerator.MoveNext() )
				strStack+=myEnumerator.Current.ToString();

			return strStack;
		}
		#endregion

		#region 以字符串形式返回栈的所有元素从栈低到栈顶
		/// <summary>
		/// 以字符串形式返回栈的所有元素从栈低到栈顶
		/// </summary>
		/// <param name="stack">要处理的栈</param>
		/// <returns>字符串</returns>
		public static string getStackStringBT(Stack stack)
		{
			string strStack="";
			IEnumerator myEnumerator = stack.GetEnumerator();
			while ( myEnumerator.MoveNext() )
				strStack=myEnumerator.Current.ToString() + strStack;

			return strStack;
		}
		#endregion
		
		#region 以字符串形式返回队列的所有元素
		/// <summary>
		/// 以字符串形式返回队列的所有元素
		/// </summary>
		/// <param name="stack">要处理的队列</param>
		/// <returns>字符串</returns>
		public static string getQueueString(Queue queue)
		{
			string strQueue="";
			IEnumerator myEnumerator = queue.GetEnumerator();
			while ( myEnumerator.MoveNext() )
				strQueue+=myEnumerator.Current.ToString();
			return strQueue;
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -