Exemplo n.º 1
0
        private void EmitNode(SyntaxTreeNode node)
        {
            var nodeType = node.GetType();

            if (nodeType == typeof(WriteLiteralNode))
            {
                EmitWriteLiteral((WriteLiteralNode)node);
            }
            else if (nodeType == typeof(WriteExpressionNode))
            {
                EmitWriteExpression((WriteExpressionNode)node);
            }
            else if (nodeType == typeof(ConditionalNode))
            {
                EmitConditional((ConditionalNode)node);
            }
            else if (nodeType == typeof(IterateNode))
            {
                EmitIterate((IterateNode)node);
            }
            else if (nodeType == typeof(BlockNode))
            {
                EmitBlock((BlockNode)node);
            }
            else if (nodeType == typeof(IncludeTemplateNode))
            {
                EmitInclude((IncludeTemplateNode)node);
            }
            else if (nodeType == typeof(OverridePointNode))
            {
                EmitOverride((OverridePointNode)node);
            }
            else if (nodeType == typeof(FlushNode))
            {
                EmitFlush();
            }
            else if (nodeType == typeof(ScopedNode))
            {
                EmitScopedNode((ScopedNode)node);
            }
            else if (nodeType == typeof(ExtendTemplateNode))
            {
                throw new VeilCompilerException("Found an ExtendTemplate node inside a SyntaxTree. Extend nodes must be the root of a tree.");
            }
            else
            {
                throw new VeilCompilerException("Unknown SyntaxTreeNode {0}".FormatInvariant(nodeType.Name));
            }
        }
Exemplo n.º 2
0
        public TResult Visit(SyntaxTreeNode node)
        {
            if (node == null)
            {
                return(null);
            }

            var blockNode = node as BlockNode;

            if (blockNode != null)
            {
                return(VisitBlockNode(blockNode));
            }

            var conditionalNode = node as ConditionalNode;

            if (conditionalNode != null)
            {
                return(VisitConditionalNode(conditionalNode));
            }

            var iterateNode = node as IterateNode;

            if (iterateNode != null)
            {
                return(VisitIterateNode(iterateNode));
            }

            var writeExpressionNode = node as WriteExpressionNode;

            if (writeExpressionNode != null)
            {
                return(VisitWriteExpressionNode(writeExpressionNode));
            }

            var writeLiteralNode = node as WriteLiteralNode;

            if (writeLiteralNode != null)
            {
                return(VisitWriteLiteralNode(writeLiteralNode));
            }

            var helperNode = node as HelperExpressionNode;

            if (helperNode != null)
            {
                return(VisitHelperNode(helperNode));
            }

            var helperBlockNode = node as HelperBlockNode;

            if (helperBlockNode != null)
            {
                return(VisitHelperBlockNode(helperBlockNode));
            }

            throw new NotSupportedException(string.Format("The given node type '{0}' isn't supported.", node.GetType()));
        }
Exemplo n.º 3
0
        private Expression HandleNode(SyntaxTreeNode node)
        {
            if (node is BlockNode)
            {
                return(HandleBlock((BlockNode)node));
            }
            if (node is WriteLiteralNode)
            {
                return(HandleWriteLiteral((WriteLiteralNode)node));
            }
            if (node is WriteExpressionNode)
            {
                return(HandleWriteExpression((WriteExpressionNode)node));
            }
            if (node is IterateNode)
            {
                return(HandleIterate((IterateNode)node));
            }
            if (node is ConditionalNode)
            {
                return(HandleConditional((ConditionalNode)node));
            }
            if (node is ScopedNode)
            {
                return(HandleScopedNode((ScopedNode)node));
            }
            if (node is FlushNode)
            {
                return(HandleFlush());
            }
            //if (node is IncludeTemplateNode) return HandleInclude((IncludeTemplateNode)node);
            if (node is OverridePointNode)
            {
                return(HandleOverride((OverridePointNode)node));
            }
            if (node is ExtendTemplateNode)
            {
                throw new VeilCompilerException("Found an ExtendTemplate node inside a SyntaxTree. Extend nodes must be the root of a tree.", node);
            }
            if (node is HelperExpressionNode)
            {
                return(HandleHelperExpression((HelperExpressionNode)node));
            }
            if (node is HelperBlockNode)
            {
                return(HandleHelperBlockNode((HelperBlockNode)node));
            }

            throw new VeilCompilerException("Unknown SyntaxTreeNode {0}".FormatInvariant(node.GetType().Name), node);
        }