Exemple #1
0
        public void FirstPlusTest()
        {
            var innerComposite = new CompositeToken
            {
                Substring = "Inner"
            };
            var stringToken = new StringToken();

            stringToken.Append('A');
            innerComposite.Add(stringToken);

            var composite = new CompositeToken
            {
                innerComposite,
                new StringToken
                {
                    Substring = "String"
                }
            };

            var helper    = new PrecedenceGrammarHelper(null);
            var firstPlus = helper.FirstPlus(new List <GrammarReplaceRule>
            {
                new GrammarReplaceRule(PrecedenceParser.TokenEnum.Program, composite)
            }, PrecedenceParser.TokenEnum.Program).ToList();

            Assert.AreEqual(2, firstPlus.Count);
            Assert.IsTrue(firstPlus.Any(x => x is StringToken && x.Substring == "A"));
            Assert.IsTrue(firstPlus.Any(x => x is CompositeToken && x.Substring == "Inner"));
        }
Exemple #2
0
        public void CompositeUndo(Action act)
        {
            redoItems.Clear();
            var compositeItem = new CompositeToken();

            undoItems.Push(compositeItem);
            act();
            if (!undoItems.Contains(compositeItem))
            {
                return;
            }
            var items = PopUntil(undoItems, compositeItem).ToList();

            undoItems.Pop(); // take the compositeItem Placeholder of the stack
            new CompositeUndoItem(items).PushOntoStack(undoItems);
        }