コード例 #1
0
ファイル: SequenceParser.cs プロジェクト: olivr70/Eto.Parse
 public override bool IsLeftRecursive(ParserContainsArgs args)
 {
     if (base.IsLeftRecursive(args))
     {
         return(true);
     }
     if (args.Push(this))
     {
         var item = Items[0];
         if (item != null && item.IsLeftRecursive(args))
         {
             args.Pop();
             return(true);
         }
         args.Pop();
     }
     return(false);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 public override bool IsLeftRecursive(ParserContainsArgs args)
 {
     if (base.IsLeftRecursive(args))
     {
         return(true);
     }
     if (args.Push(this))
     {
         for (int i = 0; i < Items.Count; i++)
         {
             Parser item = Items[i];
             if (item != null && item.IsLeftRecursive(args))
             {
                 args.Pop();
                 return(true);
             }
         }
         args.Pop();
     }
     return(false);
 }
コード例 #4
0
		public override bool IsLeftRecursive(ParserContainsArgs args)
		{
			if (base.IsLeftRecursive(args))
				return true;
			if (args.Push(this))
			{
				var item = Items[0];
				if (item != null && item.IsLeftRecursive(args)) {
					args.Pop();
					return true;
				}
				args.Pop();
			}
			return false;
		}