public void Visit(StrNode node) { foreach (var subnode in node) { Visit((dynamic)subnode); } }
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()); }
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); }
public BranchStrNode(StrNode left, StrNode right) { this.left = left; this.right = right; }