Esempio n. 1
0
        public override IEnumerable <ICstNode> Resolve(ICstNonterminalNode node)
        {
            Func <ICstNonterminalNode, IEnumerable <ICstNode> > ret = cstNode => cstNode.Children.OfType <ICstNonterminalNode>().Where(o => o.Nonterminal.Name == NonTerminal).Cast <ICstNode>();
            IEnumerable <ICstNode> result = new ICstNode[0];

            if (Target != null)
            {
                foreach (ICstNonterminalNode current in Target.Resolve(node))
                {
                    result = result.Concat(ret(current));
                }
            }
            else
            {
                result = result.Concat(ret(node));
            }
            return(result);
        }
Esempio n. 2
0
        public override IEnumerable <ICstNode> Resolve(ICstNonterminalNode node)
        {
            IEnumerable <ICstNode> result = new ICstNode[0];

            foreach (ConsumeExpression choice in Choices)
            {
                result = result.Concat(choice.Resolve(node));
            }
            bool anyNull = result.Contains(null);

            return(result.Cast <ICstNonterminalNode>().OrderBy(o => o.AbsoluteIndex).Cast <ICstNode>());
        }