示例#1
0
        public static PipelineNode GetPipeline(Parser theParser)
        {
            PipelineNode pipeline = null;

            if (theParser != null)
            {
                object objLeft = theParser.GetReductionSyntaxNode(0);
                object objRight = theParser.GetReductionSyntaxNode(2);

                if (objLeft is PipelineNode)
                {
                    pipeline = (PipelineNode)objLeft;
                    pipeline.AddItem(objRight as ASTNode);
                }
                else if (objRight is PipelineNode)
                {
                    pipeline = (PipelineNode)objRight;
                    pipeline.Insert(0, objLeft as ASTNode);
                }
            }

            if (pipeline == null)
            {
                pipeline = new PipelineNode(theParser);
                if (theParser != null)
                {
                    pipeline.AddItemFromParser(theParser, 0);
                    pipeline.AddItemFromParser(theParser, 2);
                }
            }

            return pipeline;
        }
        internal PipelineNode NormilizeToPipeline()
        {
            if (ErrorString != null)
            {
                return(null);
            }

            if (SyntaxTree == null)
            {
                return(PipelineNode.GetPipeline(m_parser));
            }

            ASTNode rootNode = SyntaxTree;

            if (rootNode is PipelineNode)
            {
                return(rootNode as PipelineNode);
            }

            PipelineNode pipeline = PipelineNode.GetPipeline(null);

            if (rootNode is AssignmentNode)
            {
                pipeline.AddItem(rootNode);
            }
            else
            {
                CmdletNode cmdlet = rootNode as CmdletNode;

                if (cmdlet == null)
                {
                    cmdlet = new CmdletNode(null, rootNode as AnyWordNode);
                }

                pipeline.AddItem(cmdlet);
            }

            return(pipeline);

            //parser.SyntaxTree.Execute(runtime);
        }
 // <pipelineRule> ::= <cmdletCall> | <pipelineRule>
 partial void CreateRule_Rule_Pipelinerule_Pipe(Parser theParser, ASTNodeContainer astNode)
 {
     astNode.Node = PipelineNode.GetPipeline(theParser);
 }