示例#1
0
    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));
    }
示例#2
0
    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));
    }