Exemple #1
0
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            showSelectedStateInfo();
            tbxFile.Text = openFileDialog1.FileName;
            //myParser.loadXML(openFileDialog1.FileName);
            //drawDiagram();

            cbxDraw.Enabled = true;
            btnReset.Enabled = true;
            g = pbxDraw.CreateGraphics();
            btnRun.Enabled = true;
            g.Clear(Color.White);
            myParser = new Parser();
            myAutomaton = new Automaton();

            string inputFile = tbxFile.Text;
            //myParser.loadXML("../../SampleFormat.xml");
            if (cbxRegEx.Checked)
            {
                myParser.loadRegEx(inputFile);
                myParser.stateList = new List<State>(myParser.buildFromRegEx(myParser.stateList, 0, myParser.regex));
            }
            else
            {
                myParser.loadXML(inputFile);
            }
            newState = new List<State>(myParser.stateList);

            myAutomaton.build(myParser.stateList);
            c = myAutomaton.stateList.Count;
            wid = (pbxDraw.Width - 170) / (c) + 10;
            setStatePoints();
            drawDiagram();
            setComboBox();
        }
Exemple #2
0
        private void tests()
        {
            string str = "\t DFA \t NFA \n\n";
            string [,]DFA = new string[5,5];
            string[,] NFA = new string[5, 5];
            //List<List<string>> DFA = new List<List<string>>(5);
            //DFA.Add(new List<string>(5));
            DFA[0,0] = "aa";
            DFA[0,1] = "babababb";
            DFA[0,2] = "abbaab";
            DFA[0,3] = "bb";
            DFA[0,4] = "bbaaaabbbab";
            DFA[1, 0] = "rgy";
            DFA[1, 1] = "rgyrgy";
            DFA[1, 2] = "rgyrgyrgy";
            DFA[1, 3] = "rgyrgyrgyrgy";
            DFA[1, 4] = "rgyrgyrgyrgyrgy";
            DFA[2,0] = "101100111110";
            DFA[2,1] = "01001001111";
            DFA[2,2] = "010101110101";
            DFA[2,3] = "101111111110";
            DFA[2,4] = "0011101110";
            DFA[3,0] = "000001111110";
            DFA[3,1] = "00000000";
            DFA[3,2] = "11111111111";
            DFA[3,3] = "01100000000";
            DFA[3,4] = "1001111001";
            DFA[4,0] = "1111111111";
            DFA[4,1] = "000000000111111111";
            DFA[4,2] = "0101010101010101";
            DFA[4,3] = "001001001001";
            DFA[4,4] = "0010011111";

            NFA[0,0] = "abbbababb";
            NFA[0,1] = "aaaaaaaab";
            NFA[0,2] = "aabaabbbbab";
            NFA[0,3] = "abaabaabbaabab";
            NFA[0,4] = "aaaabbbbaaab";
            NFA[1,0] = "11111011011111";
            NFA[1,1] = "0110";
            NFA[1,2] = "1001";
            NFA[1,3] = "111110011111";
            NFA[1,4] = "00110001001111";
            NFA[2,0] = "&";
            NFA[2,1] = "ab";
            NFA[2,2] = "ababababab";
            NFA[2,3] = "abaab";
            NFA[2,4] = "aabaabaab";
            NFA[3,0] = "aaabbbbbaba";
            NFA[3,1] = "cccaaaaacca";
            NFA[3,2] = "bbccbcbbb";
            NFA[3,3] = "accacccc";
            NFA[3,4] = "cbbbbbcbb";
            NFA[4,0] = "aaaaabbbbbb";
            NFA[4,1] = "aa";
            NFA[4,2] = "bbbbaabaaba";
            NFA[4,3] = "bababaababa";
            NFA[4,4] = "baabaaaab";

            for (int i = 0; i < 5; i++)
            {
                myAutomaton = new Automaton();
                myParser.loadXML("../../testDFA" + (i+1).ToString() + ".xml");
                myAutomaton.build(myParser.stateList);

                Automaton auto = new Automaton();
                Parser nParser = new Parser();
                nParser.loadXML("../../testNFA" + (i + 1).ToString() + ".xml");
                auto.build(nParser.stateList);

                for (int j = 0; j < 5; j++)
                {
                    myAutomaton.mExpression = DFA[i,j];
                    bool test = myAutomaton.solve(myAutomaton.currentState, myAutomaton.mExpression);
                    str += "(" + (i+1).ToString() + "," + (j+1).ToString() + ")\t" + test.ToString() + "\t";

                    auto.mExpression = NFA[i, j];
                    test = auto.solve(auto.currentState, auto.mExpression);
                    str += test.ToString() + "\n";

                }

            }
            MessageBox.Show(str);
        }
Exemple #3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            tbxDrawName.Visible = false;
            radioInitial.Checked = true;
            radioInter.Enabled = true;

            //tbxFile.Text = "../../XMLFile5.xml";

            myParser = new Parser();
            myAutomaton = new Automaton();
            newState = new List<State>();
            g = Graphics.FromImage(bmp);//pbxDraw.CreateGraphics();

            statePoints = new List<Point>();
            selectedState = new State();

            c = statePoints.Count+1;
            wid = (pbxDraw.Width-170) / (c);
        }
Exemple #4
0
        private void tbxRegEx_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                myParser = new Parser();
                myParser.regex = tbxRegEx.Text;
                myParser.stateList = new List<State>(myParser.buildFromRegEx(myParser.stateList, 0, myParser.regex));
                myAutomaton = new Automaton();
                myAutomaton.stateList = new List<State>();
                myAutomaton.build(myParser.stateList);

                cbxDraw.Enabled = true;
                btnReset.Enabled = true;
                g = pbxDraw.CreateGraphics();
                btnRun.Enabled = true;
                g.Clear(Color.White);

                newState = new List<State>(myParser.stateList);

                //myAutomaton.build(myParser.stateList);
                c = myParser.stateList.Count;
                wid = (pbxDraw.Width - 170) / (c+1) + 10;
                statePoints = new List<Point>(myParser.stateList.Count);
                setStatePoints();
                drawDiagram();
            }
        }