Example #1
0
        public bool Eval(ref TokenStack <T> stack, ref RuleData data)
        {
            int originalIndex = data.Count;

            for (int i = 0; i < Branches.Count; i++)
            {
                List <Rule <T> > rules = Branches[i];
                stack.Mark();
                {
                    if (EvalRules(ref stack, ref data, rules))
                    {
                        data.Insert(originalIndex, i);
                        stack.Unmark();
                        return(true);
                    }
                }
                stack.Jump();
                data.RemoveRange(originalIndex, data.Count - originalIndex);
            }
            stack.Next();
            return(false);
        }