Ejemplo n.º 1
0
        private void 词法分析器AToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Scanner scan = new Scanner();

            txtMsg.Text    = "";
            Scanner.LineNo = 1;
            txtToken.Text  = "------------------token表信息...-----------------" + "\r\n\r\n" + "行" + "\t" + "单词" + "\t\t" + "种别码" + "\r\n";
            string str = txtContent.Text + '\0';

            txtMsg.Text = "---------------词法分析信息...---------------" + "\r\n\r\n";
            scan.scanner(str);
            scan.write_token();
            scan.write_sym();

            try
            {
                FileStream   fs = new FileStream("token.txt", FileMode.Open);
                StreamReader sr = new StreamReader(fs);
                txtToken.Text += sr.ReadToEnd();
                sr.Close();
            }
            catch (Exception)
            {
                throw;
            }
            txtMsg.Text += "词法分析结束 " + "- " + scan.errors + " error(s)" + "\r\n";
            显示符号表信息ToolStripMenuItem.Checked = false;
            if (scan.errorList.Count != 0)
            {
                foreach (var i in scan.errorList)
                {
                    txtMsg.Text += i.ToString() + "\r\n";
                }
            }
            msgError = txtMsg.Text;
            if (scan.errorList.Count == 0)
            {
                Parser paresr = new Parser();
                paresr.parser(scan.list);
                txtMsg.Text = "";
                for (int i = 0; i < paresr.error.Count; i++)
                {
                    txtMsg.Text += paresr.error[i] + "\r\n";
                }
                txtMsg.Text += "\r\n" + "语法分析结束 " + "- " + paresr.error.Count + " error(s)" + "\r\n";
                语法分析器ToolStripMenuItem.Enabled = true;
                toolStripButton1.Enabled       = true;
                txtToken.Text = "------------------中间代码...-----------------" + "\r\n\r\n" + "NO" + "\t" + "OP" + "\t\t" + "arg1" + "\t\t" + "arg2" + "\t\t" + "result" + "\r\n";
            }
        }