private bool createAllConHoldersAndTruthtables(string proposition) { try { //CREATING PROPOSITION Connective con = PropositionReader.ReadPropositionString(proposition); if (con.IsNormalProposition()) { conHolder = new ConnectiveHolder(con); table = new Truthtable(conHolder); printDisjunctive(); conHolderDisjunctive = new ConnectiveHolder(tbDisjunctiveParse.Text); tableDisjunctive = new Truthtable(conHolderDisjunctive); conHolderDisjunctiveSimple = new ConnectiveHolder(tbDisjunctiveSimpleParse.Text); tableDisjunctiveSimple = new Truthtable(conHolderDisjunctiveSimple); conHolderNand = conHolder.GetNandHolder(); tableNand = new Truthtable(conHolderNand); conHolderNandSimple = conHolderDisjunctiveSimple.GetNandHolder(); tableNandSimple = new Truthtable(conHolderNandSimple); tbInfix.Text = conHolder.GetInfixString(); tbNand.Text = conHolderNand.GetParseString(); tbNandSimple.Text = conHolderNandSimple.GetParseString(); showTableauxTree = false; //DRAWING AND PRINTING TABLE INFORMATION printVisualTruthtables(table); printTablesInformation(); } else { if (!con.AreLocalArgumentsMatching(new List <char>(), new List <char>())) { throw new Exception("Local Arguments are mismatching or there are quantifiers with the same Local Argument"); } conHolder = new ConnectiveHolder(con); tbInfix.Text = conHolder.GetInfixString(); showTableauxTree = false; } Console.WriteLine("Succesfully parsed proposition: " + proposition); } catch (NullReferenceException) { MessageBox.Show("Parsing failed: please make sure that you wrote a proposition"); Console.WriteLine("Failed to parse proposition: " + proposition); return(false); } catch (Exception ex) { MessageBox.Show("Parsing failed: " + ex.Message); Console.WriteLine("Failed to parse proposition: " + proposition); return(false); } return(true); }
private void printVisualTruthtables(Truthtable chosenTable) { //clear tables dgvTruthTable.Columns.Clear(); dgvTruthTable.Rows.Clear(); dgvSimpleTable.Columns.Clear(); dgvSimpleTable.Rows.Clear(); if (conHolder == null) { MessageBox.Show("No proposition has been parsed yet"); return; } //table = new Truthtable(conHolder); List <char> arguments = conHolder.GetListOfAllArguments(); List <TruthtableRow> rows = chosenTable.Rows; //normal truthtable rows List <TruthtableRow> simpleRows = chosenTable.GetSimpleTable(); //simple truthtable rows //create form table's columns int counter = 0; foreach (char c in arguments) { dgvTruthTable.Columns.Add(c.ToString(), c.ToString()); dgvTruthTable.Columns[counter].Width = 20; dgvSimpleTable.Columns.Add(c.ToString(), c.ToString()); dgvSimpleTable.Columns[counter].Width = 20; counter++; } dgvTruthTable.Columns.Add("Result", "Result"); dgvTruthTable.Columns[counter].Width = 50; dgvSimpleTable.Columns.Add("Result", "Result"); dgvSimpleTable.Columns[counter].Width = 50; //provide form table's with rows DataGridViewRow row; foreach (TruthtableRow r in rows) //print normal table { row = (DataGridViewRow)dgvTruthTable.Rows[0].Clone(); counter = 0; foreach (char c in arguments) { row.Cells[counter].Value = r.GetValueForArgument(c); counter++; } row.Cells[counter].Value = r.RowValue; dgvTruthTable.Rows.Add(row); } foreach (TruthtableRow r in simpleRows) //print simple table { row = (DataGridViewRow)dgvSimpleTable.Rows[0].Clone(); counter = 0; foreach (char c in arguments) { row.Cells[counter].Value = r.GetValueForArgument(c); counter++; } row.Cells[counter].Value = r.RowValue; dgvSimpleTable.Rows.Add(row); } }