Ejemplo n.º 1
0
        private int MeasureDepth(EaxOpenClose.EngagedXmlDoc tree)
        {
            int max = 0;
            int dep = 0;

            foreach (var tag in tree.tags)
            {
                switch (tag)
                {
                case EaxOpenClose.TagOpen _:
                    dep++;
                    if (dep > max)
                    {
                        max++;
                    }
                    break;

                case EaxOpenClose.TagClose _:
                    dep--;
                    break;
                }
            }

            return(max);
        }
Ejemplo n.º 2
0
        private int CountTagsOpenClose(EaxOpenClose.EngagedXmlDoc tree)
        {
            Set <string> tags = new Set <string>();

            foreach (var tag in tree.tags)
            {
                switch (tag)
                {
                case EaxOpenClose.TagOpen open:
                    tags.Add(open.n.value);
                    break;

                case EaxOpenClose.TagClose close:
                    tags.Add(close.n.value);
                    break;
                }
            }

            return(tags.Count);
        }
Ejemplo n.º 3
0
        private bool ValidateBalance(EaxOpenClose.EngagedXmlDoc tree)
        {
            Stack <string> trace = new Stack <string>();

            foreach (var tag in tree.tags)
            {
                switch (tag)
                {
                case EaxOpenClose.TagOpen open:
                    trace.Push(open.n.value);
                    break;

                case EaxOpenClose.TagClose close:
                    var name = trace.Pop();
                    if (name != close.n.value)
                    {
                        return(false);
                    }
                    break;
                }
            }

            return(trace.Count == 0);
        }