コード例 #1
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        private void CreateTab(string title, string[] code)
        {
            int newIndex = tabAdd.TabIndex;

            tabAdd.TabIndex++;

            TabPage tabNewTab = new TabPage();

            tabNewTab.Location = new System.Drawing.Point(4, 22);
            tabNewTab.Name     = "tabPage" + tabCounter++;
            tabNewTab.Padding  = new System.Windows.Forms.Padding(3);
            tabNewTab.Size     = new System.Drawing.Size(444, 375);
            tabNewTab.TabIndex = newIndex;
            tabNewTab.Text     = title;
            tabNewTab.UseVisualStyleBackColor = true;

            FileHandlerForm fileHandler = null;

            if (code == null)
            {
                fileHandler = new FileHandlerForm();
            }
            else
            {
                fileHandler = new FileHandlerForm(code);
            }

            tabNewTab.Controls.Add(fileHandler);
            FileHandlerHash.Add(tabNewTab.TabIndex, fileHandler);

            tabControl.TabPages.Insert(newIndex, tabNewTab);
            tabControl.SelectedTab = tabNewTab;
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string          path        = IOUtils.SaveFileDialogShow(this, IOUtils.TXT_FILTER);
            int             index       = tabControl.SelectedIndex;
            FileHandlerForm fileHandler = FileHandlerHash[index];

            IOUtils.CreateTxtFile(path, fileHandler.GetText());

            tabControl.TabPages[index].Text = Path.GetFileName(path);
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        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();
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        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);
            }
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        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();
                }
            }
        }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        public MainForm()
        {
            InitializeComponent();

            FileHandlerHash = new Dictionary <int, FileHandlerForm>();

            tabCounter  = tabAdd.TabIndex;
            turnOnLexic = true;

            FileHandlerForm fileHandler = new FileHandlerForm();

            tabDefaultNew.Controls.Add(fileHandler);
            FileHandlerHash.Add(tabDefaultNew.TabIndex, fileHandler);

            Text = "TinyBASIC Analyzer";

            Lexic = new LexicAnalizer();

            radioRD      = new RadioButton();
            radioRD.Name = "syntaxType";
            radioRD.Text = "Recursive Descendent";
            toolStripRD  = new ToolStripControlHost(radioRD);

            radioNRD      = new RadioButton();
            radioNRD.Name = "syntaxType";
            radioNRD.Text = "Non Recursive Descendent";
            toolStripNRD  = new ToolStripControlHost(radioNRD);

            radioA         = new RadioButton();
            radioA.Name    = "syntaxType";
            radioA.Text    = "Ascendent";
            radioA.Checked = true;
            toolStripA     = new ToolStripControlHost(radioA);

            syntaxAnalizeTypeToolStripMenuItem.DropDownItems.Add(toolStripRD);
            syntaxAnalizeTypeToolStripMenuItem.DropDownItems.Add(toolStripNRD);
            syntaxAnalizeTypeToolStripMenuItem.DropDownItems.Add(toolStripA);
        }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: YvensFaos/TinyBASIC_IDE
        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();
                }
            }
        }