Enterra.V8x1C.Routines.V8Parsing.LexemV8.AddChild C# (CSharp) Méthode

AddChild() public méthode

public AddChild ( LexemV8 child ) : void
child LexemV8
Résultat void
        public void AddChild(LexemV8 child)
        {
            if (child == null)
            {
                return;
            }
            if (_childLexemList == null)
            {
                _childLexemList = new List<LexemV8>();
            }
            _childLexemList.Add(child);
            child.Parent = this;
        }

Usage Example

        public static LexemV8 Parse(string data)
        {
            if (String.IsNullOrEmpty(data))
            {
                return(null);
            }
            Stack <LexemV8> _lexemStack = new Stack <LexemV8>();
            LexemV8         lexemV8     = null;

            for (int i = 0; i < data.Length; i++)
            {
                char ch = data[i];
                if (ch == StartLexem &&
                    IsValidStringLexem(lexemV8))
                {
                    LexemV8 braceLexemV8 = new LexemV8 {
                        LexemType = LexemV8Type.Brace
                    };
                    if (_lexemStack.Count > 0)
                    {
                        LexemV8 parentBrace = _lexemStack.Peek();
                        parentBrace.AddChild(braceLexemV8);
                    }
                    _lexemStack.Push(braceLexemV8);
                }
                else if (ch == DelimiterLexem &&
                         IsValidStringLexem(lexemV8))
                {
                    LexemV8 parentBrace = _lexemStack.Peek();
                    parentBrace.AddChild(lexemV8);
                    lexemV8 = null;
                }
                else if (ch == EndLexem &&
                         IsValidStringLexem(lexemV8))
                {
                    LexemV8 parentBrace = _lexemStack.Pop();
                    parentBrace.AddChild(lexemV8);
                    if (_lexemStack.Count == 0)
                    {
                        lexemV8 = parentBrace;
                    }
                    else
                    {
                        lexemV8 = null;
                    }
                }
                else if (NeedAddChar(lexemV8, ch))
                {
                    if (lexemV8 == null)
                    {
                        lexemV8 = new LexemV8();
                    }
                    lexemV8.AddChar(ch);
                }
            }
            return(lexemV8);
        }