Beispiel #1
0
        /// <summary>
        /// PRIM
        /// </summary>
        /// <param name="ts"></param>
        /// <returns></returns>
        IBoolExpr Prim(TokenStream ts)
        {
            switch (ts.Current.kind)
            {
            case Kind.VAR:
                string varName = ts.Current.nString.ToString();
                ts.MoveNext();
                return(BoolExpr.CreateVariable(varName));

            case Kind.POS: ts.MoveNext(); return(BoolExpr.CreateTrueVariable());

            case Kind.NEG: ts.MoveNext(); return(BoolExpr.CreateFalseVariable());

            case Kind.LPAR: ts.MoveNext();
                IBoolExpr ev = Exists(ts);
                if (ts.Current.kind != Kind.RPAR)
                {
                    throw new ApplicationException("Expected Kind.RPAR");
                }
                ts.MoveNext(); return(ev);

            case Kind.RPAR: ts.MoveNext(); return(null);
            }
            return(null);
        }
Beispiel #2
0
 IBoolExpr BimpOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.BIMP)
     {
         ts.MoveNext();
         return(BimpOpt(new Bin(Kind.BIMP, inStr, Impl(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #3
0
 IBoolExpr DisjOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.DIS)
     {
         ts.MoveNext();
         return(DisjOpt(new Bin(Kind.DIS, inStr, Nor(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #4
0
 IBoolExpr InvImplOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.INV_IMPL)
     {
         ts.MoveNext();
         return(InvImplOpt(new Bin(Kind.INV_IMPL, inStr, Xor(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #5
0
 IBoolExpr XorOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.XOR)
     {
         ts.MoveNext();
         return(XorOpt(new Bin(Kind.XOR, inStr, Not(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #6
0
 IBoolExpr NotOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.NOT)
     {
         ts.MoveNext();
         return(NotOpt(new Bin(Kind.NOT, null, Prim(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #7
0
 IBoolExpr NandOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.NAND)
     {
         ts.MoveNext();
         return(NandOpt(new Bin(Kind.NAND, inStr, Bimp(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #8
0
 IBoolExpr ConjOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.CON)
     {
         ts.MoveNext();
         return(ConjOpt(new Bin(Kind.CON, inStr, Nand(ts)), ts));
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #9
0
        /// <summary>
        /// Returns the Scanner input in the form of an abstract syntax tree.
        /// </summary>
        /// <param name="ts"></param>
        /// <returns></returns>
        public IBoolExpr Parse(TokenStream ts)
        {
            ts.MoveNext();
            IBoolExpr result = Exists(ts);

            //return result;
            switch (ts.Current.kind)
            {
            case Kind.EOF: return(result);

            default: throw new ApplicationException("Parse error: " + ts.Current);
            }
        }
Beispiel #10
0
        private void Debug_Click(object sender, EventArgs e)
        {
            BddSharp.AST.VarList.ResetDic();

            BoolParser parser = new BoolParser();
            Scanner    sc     = new Scanner();
            TextReader tr     = new StringReader(ExpressionBox.Text);

            CategorizeVariables(VarsBox.Text);

            Ast           = parser.Parse(sc.Scan(tr));
            DebugBox.Text = Ast.print();
        }
Beispiel #11
0
        public void ParseTest()
        {
            BoolParser target = new BoolParser();

            System.Collections.Generic.IEnumerator <BddSharp.Parser.Token> ts = null; // TODO: Initialize to an appropriate value

            IBoolExpr expected = null;
            IBoolExpr actual;

            actual = target.Parse(ts);

            Assert.AreEqual(expected, actual, "BddSharp.Parser.BoolParser.parse did not return the expected value.");
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Beispiel #12
0
        public static Bdd execute(IBoolExpr AST, string filename)
        {
            if (AST == null)
            {
                return(null);        //Nothing written in textbox, or parser failed.
            }

            BDD.Setup();

            Bdd result = AST.execute();

            result.Serialize(filename, 12);

            return(result);
        }
Beispiel #13
0
 IBoolExpr ExistsOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.EXISTS)
     {
         ts.MoveNext();
         if (ts.Current.kind != Kind.LPAR)
         {
             throw new ApplicationException("Expected Kind.LPAR");
         }
         else
         {
             return(VarList(ts, Kind.EXISTS));
         }
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #14
0
 IBoolExpr ForallOpt(IBoolExpr inStr, TokenStream ts)
 {
     if (ts.Current.kind == Kind.FORALL)
     {
         //vars.Clear();
         ts.MoveNext();
         if (ts.Current.kind != Kind.LPAR)
         {
             throw new ApplicationException("Expected Kind.LPAR");
         }
         else
         {
             return(VarList(ts, Kind.FORALL));
         }
     }
     else
     {
         return(inStr);
     }
 }
Beispiel #15
0
        private void Execute_Click(object sender, EventArgs e)
        {
            BddSharp.AST.VarList.ResetDic();

            BoolParser parser = new BoolParser();
            Scanner    sc     = new Scanner();
            TextReader tr     = new StringReader(ExpressionBox.Text);

            CategorizeVariables(VarsBox.Text);

            Ast = parser.Parse(sc.Scan(tr));
            BoolExpr.execute(Ast, "foo");


            if (ExpressionBox.Text == string.Empty)
            {
                MessageBox.Show("Error: No expression provided.");
            }
            else
            {
                Thread.Sleep(4000);
                System.Diagnostics.Process.Start("results\\foo.jpg", null);
            }
        }
Beispiel #16
0
 public Forall(List <Var> Vars, IBoolExpr Body)
 {
     this.body = Body;
     this.vars = Vars;
 }
Beispiel #17
0
 public Exists(List <Var> Vars, IBoolExpr Body)
 {
     this.body = Body;
     this.vars = Vars;
 }
Beispiel #18
0
 public Bin(Kind op, IBoolExpr l, IBoolExpr r)
 {
     this.op    = op;
     this.left  = l;
     this.right = r;
 }