コード例 #1
0
        /// <summary>
        /// Searches closing bracket for given open bracket in equation.
        /// </summary>
        /// <param name="Opening_Bracket"></param>
        /// <param name="Root_Bracket_Pair"></param>
        /// <returns></returns>
        private Bracket_Pair Search_for_Close_Bracket(Open_Bracket Opening_Bracket, Bracket_Pair Root_Bracket_Pair)
        {
            int bracket_Index = Element_Colection.IndexOf(Opening_Bracket);
            int bracket_Level = 0;

            for (int i = bracket_Index; i < Element_Colection.Count; i++)
            {
                if (Element_Colection[i] is Open_Bracket)
                {
                    bracket_Level++;
                }

                if (Element_Colection[i] is Close_Bracket CB)
                {
                    if (--bracket_Level == 0)
                    {
                        return(new Bracket_Pair(Opening_Bracket, CB, Root_Bracket_Pair));
                    }
                }
            }

            while (--bracket_Level > 0)
            {
                Element_Colection.Add(new Close_Bracket());
            }

            return(Add_Close_Bracket(Opening_Bracket, Root_Bracket_Pair));
        }
コード例 #2
0
        /// <summary>
        /// Adds missing copening bracket at the beging of equation if missing.
        /// </summary>
        /// <param name="Closing_Bracket"></param>
        /// <param name="Root_Bracket_Pair"></param>
        private void Add_Open_Bracket(Close_Bracket Closing_Bracket, Bracket_Pair Root_Bracket_Pair)
        {
            Open_Bracket new_OB = new Open_Bracket();

            Element_Colection.Insert(0, new_OB);

            Bracket_Pair bracket_Pair = new Bracket_Pair(new_OB, Closing_Bracket, Root_Bracket_Pair);
        }
コード例 #3
0
        /// <summary>
        /// Adds missing closing bracket at the end of equation if missing.
        /// </summary>
        /// <param name="_Open_Bracket"></param>
        /// <param name="Root_Bracket_Pair"></param>
        /// <returns></returns>
        private Bracket_Pair Add_Close_Bracket(Open_Bracket _Open_Bracket, Bracket_Pair Root_Bracket_Pair)
        {
            Close_Bracket new_CB = new Close_Bracket();

            Element_Colection.Add(new_CB);

            return(new Bracket_Pair(_Open_Bracket, new_CB, Root_Bracket_Pair));
        }
コード例 #4
0
        public Bracket_Pair(Open_Bracket OB, Close_Bracket CB, Bracket_Pair RBP)
        {
            Open_Bracket  = OB;
            Close_Bracket = CB;

            Open_Bracket.Pair  = this;
            Close_Bracket.Pair = this;

            Root_Bracket_Pair = RBP;

            Inner_Brackets = new List <Bracket_Pair>();
            if (Root_Bracket_Pair != null)
            {
                Root_Bracket_Pair.Inner_Brackets.Add(this);
            }
        }