private static void PrintChildTokens(LISPAbstractSyntaxTreeNode ASTNode) { var tokensList = new List <string>(); foreach (var currentChild in ASTNode.Children) { tokensList.Add(currentChild.Token); } var childrenTokensListString = String.Join(' ', tokensList); Console.WriteLine(childrenTokensListString); }
public void AbstractSyntaxTreeNodeCanStoreAndIdentifyOperatorTokens() { var operatorTokensAndAnswers = AbstractSyntaxTreeNodeTestCases.AbstractSyntaxTreeNodeOperatorTokenTests; foreach (var currentTestCase in operatorTokensAndAnswers) { string token = currentTestCase.Key; bool expectedResult = currentTestCase.Value; bool actualResult = LISPAbstractSyntaxTreeNode.IsOperator(token); Assert.AreEqual(expectedResult, actualResult); } }
public static LISPAbstractSyntaxTreeNode GetTreeForNestedExpression() { var childNode = new LISPAbstractSyntaxTreeNode(); childNode.Add("+"); childNode.Add("10"); childNode.Add("5"); var ASTNode = new LISPAbstractSyntaxTreeNode(); ASTNode.Add("+"); ASTNode.Add("2"); ASTNode.Add("3"); ASTNode.Add(childNode); return(ASTNode); }
public void AbstractSyntaxTreeNodeCanIdentifyIfIsRoot() { var parentNode = new LISPAbstractSyntaxTreeNode(); var rawTokens = new string[] { "+", "1", "2" }; var expectedArguments = new string[] { "1", "2" }; foreach (var token in rawTokens) { parentNode.Add(token); } Assert.IsTrue(parentNode.IsRoot()); foreach (var currentChild in parentNode.Children) { bool nodeIsRoot = currentChild.IsRoot(); Assert.IsFalse(nodeIsRoot); bool parentIsRoot = currentChild.Parent.IsRoot(); Assert.IsTrue(parentIsRoot); } }
public static void PrintATwoLevelTree() { var grandChildTree = new LISPAbstractSyntaxTreeNode(); grandChildTree.Add("+"); grandChildTree.Add("4"); var childTree = new LISPAbstractSyntaxTreeNode(); childTree.Add("-"); childTree.Add("3"); childTree.Add(grandChildTree); var parentNode = new LISPAbstractSyntaxTreeNode(); parentNode.Add("*"); parentNode.Add("1"); parentNode.Add("2"); parentNode.Add(childTree); AbstractSyntaxTreePrinter.PrintSyntaxTree(parentNode); Console.WriteLine(); }
public void AbstractSyntaxTreeNodeCanBuildTwoLevelTree() { // Ex. (* 1 2 (- 3 (+ 4))) // ------------------------------------------------------- var parentNode = new LISPAbstractSyntaxTreeNode(); var childTree = new LISPAbstractSyntaxTreeNode(); var grandChildTree = new LISPAbstractSyntaxTreeNode(); // ------------------------------------------------------- grandChildTree.Add("+"); grandChildTree.Add("4"); childTree.Add("-"); childTree.Add("3"); childTree.Add(grandChildTree); parentNode.Add("*"); parentNode.Add("1"); parentNode.Add("2"); parentNode.Add(childTree); // ------------------------------------------------------- Assert.IsNull(parentNode.Parent); Assert.AreEqual(childTree.Parent, parentNode); Assert.AreEqual(grandChildTree.Parent, childTree); // ------------------------------------------------------- }
public void AbstractSyntaxTreeNodeCanStoreVariableToken() { var testObject = new LISPAbstractSyntaxTreeNode("x"); }
public void AbstractSyntaxTreeNodeArrayConstructorHandlesSimpleExpression() { var expressionTokens = new string[] { "(", "1", ")" }; var testTree = new LISPAbstractSyntaxTreeNode(expressionTokens); }
public void AbstractSyntaxTreeNodeCanBeInstantiated() { var testObject = new LISPAbstractSyntaxTreeNode(); }