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(); }
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); }