public override bool Contains(ParserContainsArgs args) { if (base.Contains(args)) return true; if (Inner != null && args.Push(this)) { var ret = Inner.Contains(args); args.Pop(); return ret; } return false; }
public override bool Contains(ParserContainsArgs args) { if (base.Contains(args)) { return(true); } if (Inner != null && args.Push(this)) { var ret = Inner.Contains(args); args.Pop(); return(ret); } return(false); }
public override bool IsLeftRecursive(ParserContainsArgs args) { if (base.IsLeftRecursive(args)) { return(true); } if (Inner != null) { if (args.Push(this)) { var ret = Inner.IsLeftRecursive(args); args.Pop(); return(ret); } return(false); } return(false); }
public override bool Contains(ParserContainsArgs args) { if (base.Contains(args)) return true; if (args.Push(this)) { foreach (var item in Items) { if (item != null && item.Contains(args)) { args.Pop(); return true; } } args.Pop(); } return false; }
public override bool Contains(ParserContainsArgs args) { if (base.Contains(args)) { return(true); } if (args.Push(this)) { foreach (var item in Items) { if (item != null && item.Contains(args)) { args.Pop(); return(true); } } args.Pop(); } return(false); }
/// <summary> /// Determines whether this instance is left recursive with the specified parser /// </summary> /// <remarks> /// This variant can be overridden by implementors to determine left recursion. Use the <paramref name="args"/> /// to ensure infinite recursion does not occur using Push/Pop. /// </remarks> /// <returns><c>true</c> if this instance is left recursive the specified parser; otherwise, <c>false</c>.</returns> /// <param name="args">Arguments for finding the left recursion</param> public virtual bool IsLeftRecursive(ParserContainsArgs args) { return(object.ReferenceEquals(args.Parser, this)); }
/// <summary> /// Gets a value indicating that a parser is contained within this instance /// </summary> /// <param name="args">Arguments specifying which parser to search for and recursion</param> public virtual bool Contains(ParserContainsArgs args) { return(args.Parser == this); }
public override bool IsLeftRecursive(ParserContainsArgs args) { if (base.IsLeftRecursive(args)) return true; if (Inner != null) { if (args.Push(this)) { var ret = Inner.IsLeftRecursive(args); args.Pop(); return ret; } return false; } return false; }