protected override void InnerInitialize(ParserInitializeArgs args) { if (Separator != null) { Separator.Initialize(args); } if (Until != null) { Until.Initialize(args); } separator = Separator ?? args.Grammar.Separator; skipUntilMatches = (Until != null && (Until.AddMatch || Until.Children.Any(r => r.AddMatch))); hasChildMatch = false; if (!AddMatch) { if (separator != null) { hasChildMatch |= separator.AddMatch || separator.Children.Any(r => r.AddMatch); } if (Inner != null) { hasChildMatch |= Inner.AddMatch || Inner.Children.Any(r => r.AddMatch); } } base.InnerInitialize(args); }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (Separator != null) { Separator.Initialize(args); } if (Until != null) { Until.Initialize(args); } separator = Separator ?? args.Grammar.Separator; skipUntilMatches = (Until != null && (Until.Name != null || Until.Children().Any(r => r.Name != null))); args.Pop(); } }