protected override IEnumerable <UnparsableAst> GetChildren(Unparser.ChildBnfTerms childBnfTerms, object astValue, Unparser.Direction direction) { foreach (var childRuleReferredBnfTerm in childBnfTerms.Select((childBnfTerm, index) => new ReferredBnfTermEI(childBnfTerms.ContentIndex, childBnfTerm, direction == Unparser.Direction.LeftToRight ? index : childBnfTerms.Count - 1 - index) )) { object childAstValue; Member member; if (IsMemberAtRule(childRuleReferredBnfTerm)) { member = GetMemberByAtRule(childRuleReferredBnfTerm); childAstValue = GetValue(member.MemberInfo, astValue); } else if (childRuleReferredBnfTerm.BnfTerm is BnfiTermCopy) { member = null; childAstValue = astValue; } else { member = null; childAstValue = astValue; } if (childAstValue == null && childRuleReferredBnfTerm.BnfTerm is BnfiTermConversion && ((BnfiTermConversion)childRuleReferredBnfTerm.BnfTerm).isOptionalValue) { continue; } yield return(new UnparsableAst(childRuleReferredBnfTerm.BnfTerm, childAstValue, member)); } }
protected override IEnumerable <UnparsableAst> GetChildren(Unparser.ChildBnfTerms childBnfTerms, object astValue, Unparser.Direction direction) { return(childBnfTerms.Select(childBnfTerm => new UnparsableAst(childBnfTerm, astValue))); }
protected override IEnumerable <UnparsableAst> GetChildren(Unparser.ChildBnfTerms childBnfTerms, object astValue, Unparser.Direction direction) { return(childBnfTerms.Select(childBnfTerm => new UnparsableAst(childBnfTerm, astValue: valueCreatorFromNoAst != null ? valueCreatorFromNoAst() : null))); }