Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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);
            // -------------------------------------------------------
        }
Exemple #7
0
 public void AbstractSyntaxTreeNodeCanStoreVariableToken()
 {
     var testObject = new LISPAbstractSyntaxTreeNode("x");
 }
Exemple #8
0
 public void AbstractSyntaxTreeNodeArrayConstructorHandlesSimpleExpression()
 {
     var expressionTokens = new string[] { "(", "1", ")" };
     var testTree         = new LISPAbstractSyntaxTreeNode(expressionTokens);
 }
Exemple #9
0
 public void AbstractSyntaxTreeNodeCanBeInstantiated()
 {
     var testObject = new LISPAbstractSyntaxTreeNode();
 }