예제 #1
0
        private void lexicAnalizerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int             index       = tabControl.SelectedIndex;
            FileHandlerForm fileHandler = FileHandlerHash[index];

            Lexic.File = fileHandler.GetTextLines();
            List <Token> list = Lexic.ListToken;

            if (list != null)
            {
                new LexicAnalizerForm(tabControl.TabPages[index].Text, list).Show();
            }
        }
예제 #2
0
        private void syntaxAnalyzerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int             index       = tabControl.SelectedIndex;
            FileHandlerForm fileHandler = FileHandlerHash[index];

            Lexic.File = fileHandler.GetTextLines();

            if ((Lexic.File != null) && (Lexic.File.Length > 0))
            {
                if (radioA.Checked)
                {
                    syntaxAnalizerType = SyntaxAnalizerType.ASCENDENT;
                }
                else if (radioRD.Checked)
                {
                    syntaxAnalizerType = SyntaxAnalizerType.RECURSIVE_DESCENDENT;
                }
                else if (radioNRD.Checked)
                {
                    syntaxAnalizerType = SyntaxAnalizerType.NON_RECURSIVE_DESCENDENT;
                }

                //Chama um analisador sintático do tipo setado, por default o tipo é Descendente Recursivo
                Syntax = new SyntaxAnalizer(Lexic, syntaxAnalizerType);

                string feedback = "";
                syntaxAnalyzeSuccess = Syntax.Analize(ref feedback);

                string msg   = "";
                string title = "";
                if (syntaxAnalyzeSuccess)
                {
                    msg   = "Sucesso na Análise Sintática!";
                    title = "Sucesso";
                }
                else
                {
                    msg   = "Erro na Análise Sintática, feedback: \r\n" + feedback;
                    title = "Erro";
                }

                MessageBox.Show(msg, title);
            }
        }
예제 #3
0
        private void buildToolStripMenuItem_Click(object sender, EventArgs e)
        {
            syntaxAnalyzerToolStripMenuItem_Click(sender, e);

            //Só manda compilar se der sucesso na análise sintática
            if (syntaxAnalyzeSuccess)
            {
                int             index       = tabControl.SelectedIndex;
                FileHandlerForm fileHandler = FileHandlerHash[index];

                string[] file = fileHandler.GetTextLines();
                if (file != null)
                {
                    CodeGenerator generator = new CodeGenerator(file, syntaxAnalizerType);

                    string[] code = generator.GenerateCode();

                    new GeneratedCodeForm(code).Show();
                }
            }
        }
예제 #4
0
        private void runToolStripMenuItem_Click(object sender, EventArgs e)
        {
            syntaxAnalyzerToolStripMenuItem_Click(sender, e);

            //Só manda compilar se der sucesso na análise sintática
            if (syntaxAnalyzeSuccess)
            {
                int             index       = tabControl.SelectedIndex;
                FileHandlerForm fileHandler = FileHandlerHash[index];

                string[] file = fileHandler.GetTextLines();
                if (file != null)
                {
                    CodeGenerator generator = new CodeGenerator(file, syntaxAnalizerType);

                    VirtualMachine virtualMachine = new VirtualMachine(generator.CodeByteStream());

                    string[] output = virtualMachine.Result();

                    new GeneratedCodeForm(output).Show();
                }
            }
        }