//=========================================================================================
        /// <summary>Добавить правило разбора.</summary>
        internal void AddRule(string name, string definition)
        {
            var oScanner = new SA.CodeView.Parsing.RuleDefParsing.Scanner(definition, string.Empty);
            var oParser  = new SA.CodeView.Parsing.RuleDefParsing.Parser(oScanner);

            int iStartStatesCount = this.States.Count;

            oParser.Spec = this;
            oParser.Parse();

            ///Для всех состояний, у которых не определено ни одного перехода, определяем его на EndState.
            for (int iState = iStartStatesCount; iState < this.States.Count; iState++)
            {
                var oState = this.States[iState];
                if (oState.Entries.Count == 0 && oState.ElseState == null)
                {
                    oState.SetDefaultLink(this.EndState);
                }
                oState.ResultTokenName = name;
            }

            if (oParser.Errors.Count != 0)
            {
                throw new ArgumentException(oParser.Errors[0].Msg);
            }
        }
		//=========================================================================================
		/// <summary>Добавить правило разбора.</summary>
		internal void AddRule(string name, string definition)
		{
			var oScanner = new SA.CodeView.Parsing.RuleDefParsing.Scanner(definition, string.Empty);
			var oParser = new SA.CodeView.Parsing.RuleDefParsing.Parser(oScanner);

			int iStartStatesCount = this.States.Count;

			oParser.Spec = this;
			oParser.Parse();

			///Для всех состояний, у которых не определено ни одного перехода, определяем его на EndState.
			for (int iState = iStartStatesCount; iState < this.States.Count; iState++)
			{
				var oState = this.States[iState];
				if (oState.Entries.Count == 0 && oState.ElseState == null)
					oState.SetDefaultLink(this.EndState);
				oState.ResultTokenName = name;
			}

			if (oParser.Errors.Count != 0)
				throw new ArgumentException(oParser.Errors[0].Msg);
		}