Пример #1
0
        /// <summary>
        /// Move on stack of tokens while the specified predicate is true
        /// </summary>
        /// <param name="t"> 1st token </param>
        /// <param name="tokens"> stack with 2nd token </param>
        /// <param name="pr"></param>
        /// <returns></returns>
        public static List <IToken> MoveWhile(IToken t, Stack <IToken> tokens, IPredicateOf2 <IToken, IToken> pr)
        {
            List <IToken> result = new List <IToken>();

            while (Check(t, tokens, pr))
            {
                result.Add(tokens.Pop());
            }

            return(result);
        }
Пример #2
0
 /// <summary>
 /// Defines trueness of the specified predicate towards
 /// two specific tokens
 /// </summary>
 /// <param name="t1"> 1st token </param>
 /// <param name="tokens"> stack with 2nd token on top </param>
 /// <param name="pr"></param>
 /// <returns></returns>
 public static bool Check(IToken t1, Stack <IToken> tokens, IPredicateOf2 <IToken, IToken> pr)
 {
     return(tokens.Count != 0 && pr.Execute(t1, tokens.Peek()));
 }