Example #1
0
 public void AddProgram(string name, MyProgramDeclNode myProgramNode)
 {
     programs.Add(name, myProgramNode);
 }
Example #2
0
 private void button4_Click(object sender, EventArgs e)
 {
     // declare program
     _currentProgram = GetProg1ProgramDeclNode();
     _currentProgram.Evaluate(_context);
     textBox2.AppendText(">>> " + _currentProgram.Name + " loaded.");
 }
Example #3
0
        private void button6_Click(object sender, EventArgs e)
        {
            var nodes = new CommonTreeNodeStream(_ast.Tree);

            MyLangTree walker = new MyLangTree(nodes);

            MyProgramDeclNode prog = walker.program();

            if (prog == null)
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("prog is null! Tree walk failed.");
                return;
            }

            _currentProgram = prog;

            textBox2.AppendText(Environment.NewLine);
            textBox2.AppendText("prog: " + prog.Name + " walked!");
        }
Example #4
0
        private static MyProgramDeclNode GetProg1ProgramDeclNode()
        {
            var func1Decl = GetMyFuncDecl_func1();
            var func2Decl = GetMyFuncDecl_func2();
            var func3Decl = GetMyFuncDecl_func3();
            var fib = GetMyFuncDecl_fibonaci();

            //*****************************************//

            MyAssignmentNode assignmentNodePF =
                new MyAssignmentNode(
                    new MyVariableNode("PF"),
                    new MyValueNode(10)
                    );

            MyAssignmentNode assignmentNodeA =
                new MyAssignmentNode(
                    new MyVariableNode("A"),
                    new MyAddNode(
                        new MyValueNode(10),
                        new MyValueNode(15)
                        )
                    );

            MyAssignmentNode assignmentNodeB =
                new MyAssignmentNode(
                    new MyVariableNode("B"),
                    new MyAddNode(
                        new MyValueNode(10),
                        new MyVariableNode("A")
                        )
                    );

            //  ( +  ( +  ( + 1 A[25] )  ( * 3 B[35] )  )  ( +  ( +  ( + 70 80  ) 5  )  ( + 6  ( + 9  ( /  ( - 20 10  ) 5  )  )  )  )  ) ;
            MyAddNode expressionTree =
                new MyAddNode(
                    new MyAddNode(
                        new MyAddNode(
                            new MyValueNode(1),
                            new MyVariableNode("A")
                            ),
                        new MyMultiplyNode(
                            new MyValueNode(3),
                            new MyVariableNode("B")
                            )
                        ),
                    new MyAddNode(
                        new MyAddNode(
                            new MyAddNode(
                                new MyValueNode(70),
                                new MyValueNode(80)
                                ),
                            new MyValueNode(5)
                            ),
                        new MyAddNode(
                            new MyValueNode(6),
                            new MyAddNode(
                                new MyValueNode(9),
                                new MyDivideNode(
                                    new MyMinusNode(
                                        new MyValueNode(20),
                                        new MyValueNode(10)
                                        ),
                                    new MyValueNode(5)
                                    )
                                )
                            )
                        )
                    );

            MyAssignmentNode assignmentNodeC =
                new MyAssignmentNode(
                    new MyVariableNode("C"),
                    expressionTree);

            MyAssignmentNode assignmentNodeD =
                new MyAssignmentNode(
                    new MyVariableNode("D"),
                    new MyFunctionCallNode(
                        "func1",
                        new List<MyAbstractNode>()
                            {
                                new MyVariableNode("A"),
                                new MyVariableNode("B"),
                                new MyAddNode(
                                    new MyValueNode(99),
                                    new MyValueNode(101)
                                    )
                            }
                        )
                    );

            MyAssignmentNode assignmentNodeE =
                new MyAssignmentNode(
                    new MyVariableNode("E"),
                    new MyFunctionCallNode(
                        "func1",
                        new List<MyAbstractNode>()
                            {
                                new MyVariableNode("C"),
                                new MyVariableNode("D"),
                                new MyAddNode(
                                    new MyValueNode(1000),
                                    new MyValueNode(2000)
                                    )
                            }
                        )
                    );

            MyAssignmentNode assignmentNodeF =
                new MyAssignmentNode(
                    new MyVariableNode("F"),
                    new MyFunctionCallNode(
                        "fib",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(10)
                            }
                        )
                    );

            MyIfStatement ifA_GTEQ_B =
                new MyIfStatement(
                    new MyIsLessThanOrEqualNode(
                        new MyVariableNode("A"),
                        new MyVariableNode("B")
                        ),
                    new MyStatementListNode()
                        .AddStatement(
                            new MyAssignmentNode(
                                new MyVariableNode("AA"),
                                new MyVariableNode("A")
                                )
                        )
                        .AddStatement(
                            new MyAssignmentNode(
                                new MyVariableNode("BB"),
                                new MyVariableNode("B")
                                )
                        ).AddStatement(
                            new MyIfStatement(
                                new MyIsEqualsNode(
                                        new MyVariableNode("A"),
                                        new MyValueNode(25)
                                    ),
                                new MyStatementListNode()
                                .AddStatement(
                                    new MyAssignmentNode(
                                        new MyVariableNode("MMM"),
                                        new MyValueNode(99999)
                                        )
                                ).AddStatement(
                                    new MyAssignmentNode(
                                        new MyVariableNode("NNN"),
                                        new MyValueNode(998888)
                                        )
                                ),
                                new MyStatementListNode()
                                .AddStatement(
                                    new MyAssignmentNode(
                                        new MyVariableNode("MMM"),
                                        new MyValueNode(-99999)
                                        )
                                 ).AddStatement(
                                    new MyAssignmentNode(
                                        new MyVariableNode("MMM"),
                                        new MyValueNode(-99999)
                                        )
                                    )
                                )
                        ),
                    new MyStatementListNode()
                        .AddStatement(
                            new MyAssignmentNode(
                                new MyVariableNode("AA"),
                                new MyVariableNode("B")
                                )
                        )
                        .AddStatement(
                            new MyAssignmentNode(
                                new MyVariableNode("BB"),
                                new MyVariableNode("A")
                                )
                        )
                    );

            MyAssignmentNode assignmentNodeH =
                new MyAssignmentNode(
                    new MyVariableNode("H"),
                    new MyFunctionCallNode(
                        "func2",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(-2)
                            }

                        )
                    );

            MyAssignmentNode assignmentNodeI =
                new MyAssignmentNode(
                    new MyVariableNode("I"),
                    new MyFunctionCallNode(
                        "func2",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(80)
                            }

                        )
                    );

            MyAssignmentNode assignmentNodeJ =
                new MyAssignmentNode(
                    new MyVariableNode("J"),
                    new MyFunctionCallNode(
                        "func2",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(120)
                            }

                        )
                    );

            MyAssignmentNode assignmentNodeK =
                new MyAssignmentNode(
                    new MyVariableNode("K"),
                    new MyFunctionCallNode(
                        "func3",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(12)
                            }

                        )
                    );

            MyAssignmentNode assignmentNodeL =
                new MyAssignmentNode(
                    new MyVariableNode("L"),
                    new MyFunctionCallNode(
                        "func3",
                        new List<MyAbstractNode>()
                            {
                                new MyValueNode(120)
                            }

                        )
                    );

            List<MyFunctionDecleration> funcs = new List<MyFunctionDecleration>()
                                                    {
                                                        func1Decl,
                                                        func2Decl,
                                                        func3Decl,
                                                        fib
                                                    };

            MyStatementListNode programStatements = new MyStatementListNode();

            programStatements.AddStatement(assignmentNodePF);

            programStatements.AddStatement(assignmentNodeA);
            programStatements.AddStatement(assignmentNodeB);
            programStatements.AddStatement(assignmentNodeC);
            programStatements.AddStatement(assignmentNodeD);
            programStatements.AddStatement(assignmentNodeE);

            programStatements.AddStatement(assignmentNodeF);

            programStatements.AddStatement(ifA_GTEQ_B);

            programStatements.AddStatement(assignmentNodeH);
            programStatements.AddStatement(assignmentNodeI);
            programStatements.AddStatement(assignmentNodeJ);

            programStatements.AddStatement(assignmentNodeK);
            programStatements.AddStatement(assignmentNodeL);

            var prog1ProgramDecl = new MyProgramDeclNode(
                "prog1_myl",
                funcs,
                programStatements);

            return prog1ProgramDecl;
        }