Exemple #1
0
 public void Visit(StrNode node)
 {
     foreach (var subnode in node)
     {
         Visit((dynamic)subnode);
     }
 }
Exemple #2
0
        public Node SimpleType()
        {
            switch (CurrentToken)
            {
            case TokenCategory.INT:
                var intType = new IntNode()
                {
                    AnchorToken = Expect(TokenCategory.INT)
                };
                return(intType);


            case TokenCategory.STR:
                var strType = new StrNode()
                {
                    AnchorToken = Expect(TokenCategory.STR)
                };
                return(strType);

            case TokenCategory.BOOL:
                var boolType = new BoolNode()
                {
                    AnchorToken = Expect(TokenCategory.BOOL)
                };
                return(boolType);

            default:
                throw new SyntaxError(firstOfDeclaration,
                                      tokenStream.Current);
            }
        }
        static public void TestJSCreationFunction()
        {
            VarNode m_1 = new VarNode("link");
            StrNode m_2 = new StrNode("to,text");
            StrNode m_3 = new StrNode("[[_to|_text]]");

            MacroNode m = new MacroNode("macro", new List <ASTNode>()
            {
                m_1, m_2, m_3
            });

            Console.WriteLine(m.ToTaggedJS());
        }
Exemple #4
0
        public void ShouldSortCorrectly()
        {
            var n1 = new StrNode { Name = "1" };
            var n2 = new StrNode { Name = "2" };
            var n3 = new StrNode { Name = "3" };
            var n4 = new StrNode { Name = "4" };
            var n5 = new StrNode { Name = "5" };
            var n6 = new StrNode { Name = "6" };
            var n7 = new StrNode { Name = "7" };
            var n8 = new StrNode { Name = "8" };
            var n9 = new StrNode { Name = "9" };
            var n10 = new StrNode { Name = "10" };
            var n11 = new StrNode { Name = "11" };
            var n12 = new StrNode { Name = "12" };
            var n13 = new StrNode { Name = "13" };
            var n14 = new StrNode { Name = "14" };

            n1.DependsOn(n2, n3);
            n2.DependsOn(n4, n5);
            n5.DependsOn(n6);
            n6.DependsOn(n7);
            n7.DependsOn(n8, n9);
            n8.DependsOn(n10);
            n9.DependsOn(n10);
            n11.DependsOn(n1);
            n12.DependsOn(n13);
            n13.DependsOn(n14);
            n14.DependsOn(n12);

            var nodes = new[] { n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14 };

            var circular = new List<StrNode>();
            var sorted = Trees.TopoSort(nodes, n => n.Dependencies, c => circular.Add(c))
                .Select(n => n.Name)
                .ToArray();

            Assert.Less(sorted.IndexOf("10"), sorted.IndexOf("8"));
            Assert.Less(sorted.IndexOf("10"), sorted.IndexOf("9"));
            Assert.Less(sorted.IndexOf("8"), sorted.IndexOf("7"));
            Assert.Less(sorted.IndexOf("9"), sorted.IndexOf("7"));
            Assert.Less(sorted.IndexOf("7"), sorted.IndexOf("6"));
            Assert.Less(sorted.IndexOf("6"), sorted.IndexOf("5"));
            Assert.Less(sorted.IndexOf("5"), sorted.IndexOf("2"));
            Assert.Less(sorted.IndexOf("4"), sorted.IndexOf("2"));
            Assert.Less(sorted.IndexOf("2"), sorted.IndexOf("1"));
            Assert.Less(sorted.IndexOf("3"), sorted.IndexOf("1"));

            Assert.AreEqual(3, circular.Count);
            CollectionAssert.Contains(circular, n12);
            CollectionAssert.Contains(circular, n13);
            CollectionAssert.Contains(circular, n14);
        }
Exemple #5
0
 public BranchStrNode(StrNode left, StrNode right)
 {
     this.left = left;
     this.right = right;
 }
Exemple #6
0
 public BranchStrNode(StrNode left, StrNode right)
 {
     this.left  = left;
     this.right = right;
 }