Пример #1
0
 public VisitTreeWizardContextVisitor(TreeWizard outer, IContextVisitor visitor, IDictionary <string, object> labels, TreePattern tpattern)
 {
     _outer    = outer;
     _visitor  = visitor;
     _labels   = labels;
     _tpattern = tpattern;
 }
Пример #2
0
 public TreePatternParser(TreePatternLexer tokenizer, TreeWizard wizard, ITreeAdaptor adaptor)
 {
     this.tokenizer = tokenizer;
     this.wizard    = wizard;
     this.adaptor   = adaptor;
     this.ttype     = tokenizer.NextToken();
 }
Пример #3
0
 public TreePatternParser( TreePatternLexer tokenizer, TreeWizard wizard, ITreeAdaptor adaptor )
 {
     this.tokenizer = tokenizer;
     this.wizard = wizard;
     this.adaptor = adaptor;
     ttype = tokenizer.NextToken(); // kickstart
 }
Пример #4
0
 public void TestEqualsWithMismatchedText()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t1 = (CommonTree)wiz.Create( "(A B[foo] C)" );
     CommonTree t2 = (CommonTree)wiz.Create( "(A B C)" );
     bool same = TreeWizard.Equals( t1, t2, adaptor );
     Assert.IsTrue( !same );
 }
Пример #5
0
 public void TestEquals()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t1 = (CommonTree)wiz.Create( "(A B C)" );
     CommonTree t2 = (CommonTree)wiz.Create( "(A B C)" );
     bool same = TreeWizard.Equals( t1, t2, adaptor );
     assertTrue( same );
 }
Пример #6
0
 public void TestDoubleLevelTree()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A (B C) (B D) E)" );
     string found = t.ToStringTree();
     string expecting = "(A (B C) (B D) E)";
     Assert.AreEqual( expecting, found );
 }
Пример #7
0
 public FindTreeWizardContextVisitor(
     TreeWizard outer,
     TreeWizard.TreePattern tpattern,
     IList subtrees)
 {
     this._outer    = outer;
     this._tpattern = tpattern;
     this._subtrees = subtrees;
 }
Пример #8
0
        protected static bool EqualsCore(object t1, object t2, ITreeAdaptor adaptor)
        {
            if (t1 == null || t2 == null || (adaptor.GetType(t1) != adaptor.GetType(t2) || !adaptor.GetText(t1).Equals(adaptor.GetText(t2))))
            {
                return(false);
            }
            int childCount1 = adaptor.GetChildCount(t1);
            int childCount2 = adaptor.GetChildCount(t2);

            if (childCount1 != childCount2)
            {
                return(false);
            }
            for (int i = 0; i < childCount1; ++i)
            {
                if (!TreeWizard.EqualsCore(adaptor.GetChild(t1, i), adaptor.GetChild(t2, i), adaptor))
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #9
0
        public void TestAB()
        {
            ITreeAdaptor adaptor = new CommonTreeAdaptor();
            TreeWizard wiz = new TreeWizard( adaptor, tokens );
            CommonTree t = (CommonTree)wiz.Create( "(A B)" );
            TreeIterator it = new TreeIterator( t );
            StringBuilder buf = new StringBuilder();
            bool first = true;
            while ( it.MoveNext() )
            {
                CommonTree n = (CommonTree)it.Current;

                if ( !first )
                    buf.Append( " " );

                first = false;
                buf.Append( n );
            }
            string expecting = "A DOWN B UP EOF";
            string found = buf.ToString();
            Assert.AreEqual( expecting, found );
        }
Пример #10
0
 public void TestVisitPatternMultiple()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C (A B) (D (A B)))" );
     IList elements = new List<object>();
     wiz.Visit( t, "(A B)",
                   new testRepeatsVisitWithContext_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[A@A[2], A@D[0]]"; // shouldn't match overall root, just (A B)
     Assert.AreEqual( expecting, found );
 }
Пример #11
0
 public void TestVisitPatternMultipleWithLabels()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C (A[foo] B[bar]) (D (A[big] B[dog])))" );
     IList elements = new List<object>();
     wiz.Visit( t, "(%a:A %b:B)",
                   new testVisitPatternMultipleWithLabels_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[foo@A[2]foo&bar, big@D[0]big&dog]";
     Assert.AreEqual( expecting, found );
 }
Пример #12
0
 public void TestSingleNodeIndex()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "ID" );
     var m = wiz.Index( t );
     string found = m.ToElementString();
     string expecting = "{10=[ID]}";
     Assert.AreEqual( expecting, found );
 }
Пример #13
0
 public void TestSingleNodeWithArg()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "ID[foo]" );
     string found = t.ToStringTree();
     string expecting = "foo";
     Assert.AreEqual( expecting, found );
 }
Пример #14
0
 public void TestParseLabelsAndTestText()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B[foo] C)" );
     var labels = new Dictionary<string, object>();
     bool valid = wiz.Parse( t, "(%a:A %b:B[foo] %c:C)", labels );
     Assert.IsTrue( valid );
     Assert.AreEqual( "A", labels.get( "a" ).ToString() );
     Assert.AreEqual( "foo", labels.get( "b" ).ToString() );
     Assert.AreEqual( "C", labels.get( "c" ).ToString() );
 }
Пример #15
0
 public void TestInvalidListTree()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "A B C" );
     Assert.IsTrue( t == null );
 }
Пример #16
0
 public static bool Equals(object t1, object t2, ITreeAdaptor adaptor)
 {
     return(TreeWizard.EqualsCore(t1, t2, adaptor));
 }
Пример #17
0
 public PatternMatchingContextVisitor(TreeWizard owner, TreePattern pattern, IList list)
 {
     this.owner   = owner;
     this.pattern = pattern;
     this.list    = list;
 }
Пример #18
0
 public void TestParseWithText2()
 {
     TreeWizard wiz = new TreeWizard(adaptor, tokens);
     CommonTree t = (CommonTree)wiz.Create("(A B[T__32] (C (D E[a])))");
     // C pattern has no text arg so despite [bar] in t, no need
     // to match text--check structure only.
     bool valid = wiz.Parse(t, "(A B[foo] C)");
     Assert.AreEqual("(A T__32 (C (D a)))", t.ToStringTree());
 }
Пример #19
0
 public void TestParseWithTextFails()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C)" );
     bool valid = wiz.Parse( t, "(A[foo] B C)" );
     Assert.IsTrue( !valid ); // fails
 }
Пример #20
0
 public void TestParseWithText()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B[foo] C[bar])" );
     // C pattern has no text arg so despite [bar] in t, no need
     // to match text--check structure only.
     bool valid = wiz.Parse( t, "(A B[foo] C)" );
     Assert.IsTrue( valid );
 }
Пример #21
0
 public void TestParseSingleNode()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "A" );
     bool valid = wiz.Parse( t, "A" );
     Assert.IsTrue( valid );
 }
Пример #22
0
 public void TestParseLabelsInNestedTree()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A (B C) (D E))" );
     var labels = new Dictionary<string, object>();
     bool valid = wiz.Parse( t, "(%a:A (%b:B %c:C) (%d:D %e:E) )", labels );
     Assert.IsTrue( valid );
     Assert.AreEqual( "A", labels.get( "a" ).ToString() );
     Assert.AreEqual( "B", labels.get( "b" ).ToString() );
     Assert.AreEqual( "C", labels.get( "c" ).ToString() );
     Assert.AreEqual( "D", labels.get( "d" ).ToString() );
     Assert.AreEqual( "E", labels.get( "e" ).ToString() );
 }
Пример #23
0
 public void TestWildcard()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C)" );
     bool valid = wiz.Parse( t, "(A . .)" );
     Assert.IsTrue( valid );
 }
Пример #24
0
 public void TestVisitPattern()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C (A B) D)" );
     IList elements = new List<object>();
     wiz.Visit( t, "(A B)",
                    new testNoRepeatsVisit_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[A]"; // shouldn't match overall root, just (A B)
     assertEquals( expecting, found );
 }
Пример #25
0
 public InvokeVisitorOnPatternMatchContextVisitor(TreeWizard owner, TreePattern pattern, ContextVisitor visitor)
 {
     this.owner   = owner;
     this.pattern = pattern;
     this.visitor = visitor;
 }
Пример #26
0
			public InvokeVisitorOnPatternMatchContextVisitor(TreeWizard owner, TreePattern pattern, ContextVisitor visitor)
			{
				this.owner = owner;
				this.pattern = pattern;
				this.visitor = visitor;
			}
Пример #27
0
 public FindTreeWizardContextVisitor( TreeWizard outer, TreePattern tpattern, IList subtrees )
 {
     _outer = outer;
     _tpattern = tpattern;
     _subtrees = subtrees;
 }
Пример #28
0
 public void TestListTree()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(nil A B C)" );
     string found = t.ToStringTree();
     string expecting = "A B C";
     Assert.AreEqual( expecting, found );
 }
Пример #29
0
			public PatternMatchingContextVisitor(TreeWizard owner, TreePattern pattern, IList list)
			{
				this.owner = owner;
				this.pattern = pattern;
				this.list = list;
			}
Пример #30
0
 public void TestSingleNodeTree()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A)" );
     string found = t.ToStringTree();
     string expecting = "A";
     assertEquals( expecting, found );
 }
Пример #31
0
 public void TestParseWithWildcardLabels()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C)" );
     var labels = new Dictionary<string, object>();
     bool valid = wiz.Parse( t, "(A %b:. %c:.)", labels );
     Assert.IsTrue( valid );
     Assert.AreEqual( "B", labels.get( "b" ).ToString() );
     Assert.AreEqual( "C", labels.get( "c" ).ToString() );
 }
Пример #32
0
 public void TestFindPattern()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B C (A[foo] B[bar]) (D (A[big] B[dog])))" );
     IList subtrees = wiz.Find( t, "(A B)" );
     IList elements = subtrees;
     string found = elements.ToElementString();
     string expecting = "[foo, big]";
     Assert.AreEqual( expecting, found );
 }
Пример #33
0
 public bool Equals(object t1, object t2)
 {
     return(TreeWizard.EqualsCore(t1, t2, this.adaptor));
 }
Пример #34
0
 public void TestRepeatsIndex()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B (A C B) B D D)" );
     var m = wiz.Index( t );
     string found = sortMapToString( m );
     string expecting = "{5=[A, A], 6=[B, B, B], 7=[C], 8=[D, D]}";
     Assert.AreEqual( expecting, found );
 }
Пример #35
0
 public void TestRepeatsVisit()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B (A C B) B D D)" );
     IList elements = new List<object>();
     wiz.Visit( t, wiz.GetTokenType( "B" ),
                    new testNoRepeatsVisit_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[B, B, B]";
     Assert.AreEqual( expecting, found );
 }
Пример #36
0
 public void TestRepeatsVisitWithNullParentAndContext()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B (A C B) B D D)" );
     IList elements = new List<object>();
     wiz.Visit( t, wiz.GetTokenType( "A" ),
        new testRepeatsVisitWithContext_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[A@nil[0], A@A[1]]";
     Assert.AreEqual( expecting, found );
 }
Пример #37
0
 public VisitTreeWizardContextVisitor( TreeWizard outer, IContextVisitor visitor, IDictionary<string, object> labels, TreePattern tpattern )
 {
     _outer = outer;
     _visitor = visitor;
     _labels = labels;
     _tpattern = tpattern;
 }
Пример #38
0
 public void TestRepeatsVisitWithContext()
 {
     TreeWizard wiz = new TreeWizard( adaptor, tokens );
     CommonTree t = (CommonTree)wiz.Create( "(A B (A C B) B D D)" );
     IList elements = new List<object>();
     wiz.Visit( t, wiz.GetTokenType( "B" ),
        new testRepeatsVisitWithContext_TreeWizard_Visitor( elements ) );
     string found = elements.ToElementString();
     string expecting = "[B@A[0], B@A[1], B@A[2]]";
     assertEquals( expecting, found );
 }