Esempio n. 1
0
        private IEnumerable <Tag> FindIgnoredTags(Queue <Tag> orderedTags)
        {
            var tagStack = new Stack <Tag>();

            foreach (var tag in orderedTags)
            {
                if (parsers.GetParserFromType(tag.Type).TagIgnorable(tagStack.Select(t => t.Type)))
                {
                    yield return(tag);
                }

                if (tag.IsOpening)
                {
                    tagStack.Push(tag);
                }
                if (tag.IsOpening || tagStack.Count == 0)
                {
                    continue;
                }
                var upperTag = tagStack.Peek();
                if (upperTag.Type == tag.Type)
                {
                    tagStack.Pop();
                }
            }
        }