예제 #1
0
        // Constructor, initialize important components and variables
        public Form1()
        {
            InitializeComponent();
            menuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomColorTable());

            rM = new RegisterMachine(new List <string>()
            {
                ""
            });
            register = new Registers();
            dt       = new DataTable();
            saved    = true;
            compiled = false;
            ifMode   = false;

            // Columns
            dt.Columns.Add("Index");
            dt.Columns.Add("Value");

            // set columns
            dataGridView2.DataSource = dt;


            // disable sorting of columns
            foreach (DataGridViewColumn column in dataGridView2.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
        }
예제 #2
0
        // Event Handler for StepByStep ToolStripMenuItem, executes one line of code per click
        private void StepByStepToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                // Don't compile twice if code is already compiled
                if (!compiled)
                {
                    errorBox.Text = "";
                    rM            = new RegisterMachine(textEditorBox.Text.Split('\n').ToList());
                    compiled      = true;
                }

                Highlight();

                // Check if there are more steps available or end of code is reached
                if (rM.ExecuteOneStep() == false)
                {
                    UpdateLabels();
                    UpdateDataGridView();
                    errorBox.Text = "Program execution finished!";

                    rM.ResetState();
                }
                else
                {
                    UpdateLabels();
                    UpdateDataGridView();
                }
            }
            catch (Exception exc)
            {
                errorBox.Text = exc.Message;
            }
        }
예제 #3
0
파일: Form1.cs 프로젝트: joynere/Favo
        // Event Handler for StepByStep ToolStripMenuItem, executes one line of code per click
        private void StepByStepToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!waitingForInput)
            {
                StepByStep = true;
                try
                {
                    // Don't compile twice if code is already compiled
                    if (!compiled)
                    {
                        errorBox.Text = "";
                        rM            = new RegisterMachine(textEditorBox.Text.Split('\n').ToList(), ifMode);
                        compiled      = true;
                    }

                    Highlight();

                    // Check if there are more steps available or end of code is reached
                    RegisterMachine.ReturnType T = rM.ExecuteOneStep(ref OutputString);

                    switch (T)
                    {
                    case RegisterMachine.ReturnType.OUTPUT:
                        errorBox.Text = OutputString;
                        break;

                    case RegisterMachine.ReturnType.INPUT:
                        UpdateLabels();
                        UpdateDataGridView();
                        waitingForInput       = true;
                        inputTextBox.ReadOnly = false;
                        inputTextBox.Enabled  = true;
                        inputTextBox.Text     = "Waiting for Input";
                        return;

                    case RegisterMachine.ReturnType.END:
                        UpdateLabels();
                        UpdateDataGridView();
                        errorBox.Text = "Program execution finished!";

                        rM.ResetState();
                        break;

                    default:
                        UpdateLabels();
                        UpdateDataGridView();
                        break;
                    }
                }
                catch (Exception exc)
                {
                    errorBox.Text = exc.Message;
                }
            }
        }
예제 #4
0
파일: Form1.cs 프로젝트: joynere/Favo
        //Event Handler for the "Run" item in the MenuStrip, compiles and runs the program
        private void RunToolStripMenuItemClick(object sender, EventArgs e)
        {
            waitingForInput = false;

            StepByStep = false;
            UpdateCodelines();
            errorBox.Text = "";

            try
            {
                rM       = new RegisterMachine(textEditorBox.Text.Split('\n').ToList(), ifMode);
                compiled = true;

                RegisterMachine.ReturnType T = RegisterMachine.ReturnType.RUNNING;

                // Execute code until end or input/output command
                while (T != RegisterMachine.ReturnType.END)
                {
                    T = rM.ExecuteRegisterMachine(ref OutputString);
                    // Show output if asked for
                    if (T == RegisterMachine.ReturnType.OUTPUT)
                    {
                        errorBox.Text = OutputString;
                    }

                    // Set register machine to "wait"-state and request input
                    if (T == RegisterMachine.ReturnType.INPUT)
                    {
                        UpdateLabels();
                        UpdateDataGridView();
                        waitingForInput       = true;
                        inputTextBox.ReadOnly = false;
                        inputTextBox.Enabled  = true;
                        inputTextBox.Text     = "Waiting for Input";
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                errorBox.Text = exception.Message;
            }

            UpdateLabels();
            UpdateDataGridView();

            rM.ResetState();
        }
예제 #5
0
        //Event Handler for the "Run" item in the MenuStrip, compiles and runs the program
        private void RunToolStripMenuItemClick(object sender, System.EventArgs e)
        {
            errorBox.Text = "";

            try
            {
                // TODO: IMPLEMENT OPTIMISATION (compiled bool)!!!
                rM       = new RegisterMachine(textEditorBox.Text.Split('\n').ToList());
                compiled = true;
                rM.ExecuteRegisterMachine(false);
            }
            catch (Exception exception)
            {
                errorBox.Text = exception.Message;
            }

            UpdateLabels();
            UpdateDataGridView();

            rM.ResetState();
        }