private dfMarkupElement parseElement(Queue <dfMarkupElement> tokens) { dfMarkupElement _dfMarkupElement = tokens.Dequeue(); if (_dfMarkupElement is dfMarkupString) { return(((dfMarkupString)_dfMarkupElement).SplitWords()); } dfMarkupTag _dfMarkupTag = (dfMarkupTag)_dfMarkupElement; if (_dfMarkupTag.IsClosedTag || _dfMarkupTag.IsEndTag) { return(this.refineTag(_dfMarkupTag)); } while (tokens.Count > 0) { dfMarkupElement _dfMarkupElement1 = this.parseElement(tokens); if (_dfMarkupElement1 is dfMarkupTag) { dfMarkupTag _dfMarkupTag1 = (dfMarkupTag)_dfMarkupElement1; if (_dfMarkupTag1.IsEndTag) { if (_dfMarkupTag1.TagName != _dfMarkupTag.TagName) { return(this.refineTag(_dfMarkupTag)); } break; } } _dfMarkupTag.AddChildNode(_dfMarkupElement1); } return(this.refineTag(_dfMarkupTag)); }
private dfMarkupElement parseElement(Queue <dfMarkupElement> tokens) { dfMarkupElement element = tokens.Dequeue(); if (element is dfMarkupString) { return(((dfMarkupString)element).SplitWords()); } dfMarkupTag original = (dfMarkupTag)element; if (!original.IsClosedTag && !original.IsEndTag) { while (tokens.Count > 0) { dfMarkupElement node = this.parseElement(tokens); if (node is dfMarkupTag) { dfMarkupTag tag2 = (dfMarkupTag)node; if (tag2.IsEndTag) { if (tag2.TagName == original.TagName) { break; } return(this.refineTag(original)); } } original.AddChildNode(node); } } return(this.refineTag(original)); }