about summary refs log tree commit diff homepage
path: root/lib
diff options
context:
space:
mode:
authorCristian Cadar <cristic@cs.stanford.edu>2009-06-16 00:52:01 +0000
committerCristian Cadar <cristic@cs.stanford.edu>2009-06-16 00:52:01 +0000
commit94fc7d881cf68644eb89d0ee87d049b4f37e0af8 (patch)
tree3112c9888a8aeadac3664dec199acbe296c7b8b0 /lib
parent9b9d6f846277756468e0484f22ac16a4a9ab2aff (diff)
downloadklee-94fc7d881cf68644eb89d0ee87d049b4f37e0af8.tar.gz
Added support for logical formulas in the SMTLIB parser.
Started to work on parsing bitvector terms.


git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@73453 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/SMT/smtlib.y618
1 files changed, 346 insertions, 272 deletions
diff --git a/lib/SMT/smtlib.y b/lib/SMT/smtlib.y
index 65931db1..f464f7bc 100644
--- a/lib/SMT/smtlib.y
+++ b/lib/SMT/smtlib.y
@@ -96,8 +96,9 @@ int smtliberror(const char *s)
 %type <pat_ann> patterns_annotations
 */
 
-%type <node> an_formula an_atom prop_atom
-%type <str> logic_name status attribute annotation user_value
+%type <node> an_formula an_logical_formula an_atom prop_atom
+%type <node> an_term basic_term an_fun
+%type <str> logic_name status attribute user_value annotation annotations
 
 
 %token <str> NUMERAL_TOK
@@ -376,26 +377,146 @@ an_formulas:
 */
 
 
-an_formula:
-    an_atom
+an_logical_formula:
+
+    LPAREN_TOK NOT_TOK an_formula RPAREN_TOK
     {
-      $$ = $1;
+      $$ = Expr::createNot($3);
     }
-/*
-  | LPAREN_TOK connective an_formulas annotations RPAREN_TOK
+  | LPAREN_TOK NOT_TOK an_formula annotations RPAREN_TOK
     {
-      $$ = new CVC3::Expr(VC->listExpr(*$2, *$3));
-      delete $2;
-      delete $3;
-      delete $4;
+      $$ = Expr::createNot($3);
     }
-  | LPAREN_TOK connective an_formulas RPAREN_TOK
+
+  | LPAREN_TOK IMPLIES_TOK an_formula an_formula RPAREN_TOK
     {
-      $$ = new CVC3::Expr(VC->listExpr(*$2, *$3));
-      delete $2;
-      delete $3;
+      $$ = Expr::createImplies($3, $4);
+    }
+  | LPAREN_TOK IMPLIES_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = Expr::createImplies($3, $4);
+    }
+
+  | LPAREN_TOK IF_THEN_ELSE_TOK an_formula an_formula an_formula RPAREN_TOK
+    {
+      $$ = SelectExpr::create($3, $4, $5);
+    }
+  | LPAREN_TOK IF_THEN_ELSE_TOK an_formula an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = SelectExpr::create($3, $4, $5);
+    }
+
+  | LPAREN_TOK AND_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = AndExpr::create($3, $4);
+    }
+  | LPAREN_TOK AND_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = AndExpr::create($3, $4);
+    }
+
+  | LPAREN_TOK OR_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = OrExpr::create($3, $4);
+    }
+  | LPAREN_TOK OR_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = OrExpr::create($3, $4);
+    }
+
+  | LPAREN_TOK XOR_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = XorExpr::create($3, $4);
+    }
+  | LPAREN_TOK XOR_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = XorExpr::create($3, $4);
+    }
+
+  | LPAREN_TOK IFF_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = EqExpr::create($3, $4);
+    }
+  | LPAREN_TOK IFF_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = EqExpr::create($3, $4);
+    }
+  | LPAREN_TOK NOT_TOK an_formula RPAREN_TOK
+    {
+      $$ = Expr::createNot($3);
+    }
+  | LPAREN_TOK NOT_TOK an_formula annotations RPAREN_TOK
+    {
+      $$ = Expr::createNot($3);
+    }
+
+  | LPAREN_TOK IMPLIES_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = Expr::createImplies($3, $4);
+    }
+  | LPAREN_TOK IMPLIES_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = Expr::createImplies($3, $4);
+    }
+
+  | LPAREN_TOK IF_THEN_ELSE_TOK an_formula an_formula an_formula RPAREN_TOK
+    {
+      $$ = SelectExpr::create($3, $4, $5);
+    }
+  | LPAREN_TOK IF_THEN_ELSE_TOK an_formula an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = SelectExpr::create($3, $4, $5);
+    }
+
+  | LPAREN_TOK AND_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = AndExpr::create($3, $4);
+    }
+  | LPAREN_TOK AND_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = AndExpr::create($3, $4);
+    }
+
+  | LPAREN_TOK OR_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = OrExpr::create($3, $4);
+    }
+  | LPAREN_TOK OR_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = OrExpr::create($3, $4);
     }
 
+  | LPAREN_TOK XOR_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = XorExpr::create($3, $4);
+    }
+  | LPAREN_TOK XOR_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = XorExpr::create($3, $4);
+    }
+
+  | LPAREN_TOK IFF_TOK an_formula an_formula RPAREN_TOK
+    {
+      $$ = EqExpr::create($3, $4);
+    }
+  | LPAREN_TOK IFF_TOK an_formula an_formula annotations RPAREN_TOK
+    {
+      $$ = EqExpr::create($3, $4);
+    }
+;
+
+
+an_formula:
+    an_atom
+    {
+      $$ = $1;
+    }
+
+  | an_logical_formula
+    {
+      $$ = $1;
+    }
+/*
   | LPAREN_TOK LET_TOK LPAREN_TOK var an_term RPAREN_TOK an_formula annotations RPAREN_TOK
     {
       CVC3::Expr e(VC->listExpr(VC->listExpr(*$4, *$5)));
@@ -434,39 +555,6 @@ an_formula:
 ;
 
 
-/*
-connective:
-    NOT_TOK
-    {
-      $$ = new std::string("_NOT");
-    }
-  | IMPLIES_TOK
-    {
-      $$ = new std::string("_IMPLIES");
-    }
-  | IF_THEN_ELSE_TOK
-    {
-      $$ = new std::string("_IF");
-    }
-  | AND_TOK
-    {
-      $$ = new std::string("_AND");
-    }
-  | OR_TOK
-    {
-      $$ = new std::string("_OR");
-    }
-  | XOR_TOK
-    {
-      $$ = new std::string("_XOR");
-    }
-  | IFF_TOK
-    {
-      $$ = new std::string("_IFF");
-    }
-;
-*/
-
 an_atom:
     prop_atom 
     {
@@ -540,12 +628,10 @@ an_atom:
 prop_atom:
     TRUE_TOK
     {
-      //$$ = new CVC3::Expr(VC->idExpr("_TRUE_EXPR"));
       $$ = ConstantExpr::create(1, 1);
     }
   | FALSE_TOK
     { 
-      //$$ = new CVC3::Expr(VC->idExpr("_FALSE_EXPR"));
       $$ = ConstantExpr::create(0, 1);;
     }
 /*
@@ -561,20 +647,197 @@ prop_atom:
 ;  
 
 /*
-an_terms:
-    an_term
+an_comparison_fun:
+
+    LPAREN_TOK IMPLIES_TOK an_term an_term RPAREN_TOK
     {
-      $$ = new std::vector<CVC3::Expr>;
-      $$->push_back(*$1);
-      delete $1;
+      $$ = UltExpr::createImplies($3, $4);
     }
-  | an_terms an_term
+  | LPAREN_TOK IMPLIES_TOK an_term an_term annotations RPAREN_TOK
     {
-      $1->push_back(*$2);
-      $$ = $1; 
-      delete $2;
+      $$ = Expr::createImplies($3, $4);
     }
 ;
+*/
+
+
+an_fun:
+    an_logical_formula
+    {
+      $$ = $1;
+    }
+
+/*
+      $$ = new std::vector<CVC3::Expr>;
+      if (BVENABLED && (*$1 == "bvlt" || *$1 == "bvult")) {
+        $$->push_back(VC->idExpr("_BVLT"));
+      }
+      else if (BVENABLED && (*$1 == "bvleq" || *$1 == "bvule")) {
+        $$->push_back(VC->idExpr("_BVLE"));
+      }
+      else if (BVENABLED && (*$1 == "bvgeq" || *$1 == "bvuge")) {
+        $$->push_back(VC->idExpr("_BVGE"));
+      }
+      else if (BVENABLED && (*$1 == "bvgt" || *$1 == "bvugt")) {
+        $$->push_back(VC->idExpr("_BVGT"));
+      }
+      else if (BVENABLED && *$1 == "bvslt") {
+        $$->push_back(VC->idExpr("_BVSLT"));
+      }
+      else if (BVENABLED && (*$1 == "bvsleq" || *$1 == "bvsle")) {
+        $$->push_back(VC->idExpr("_BVSLE"));
+      }
+      else if (BVENABLED && (*$1 == "bvsgeq" || *$1 == "bvsge")) {
+        $$->push_back(VC->idExpr("_BVSGE"));
+      }
+      else if (BVENABLED && *$1 == "bvsgt") {
+        $$->push_back(VC->idExpr("_BVSGT"));
+      }
+      else if (ARRAYSENABLED && *$1 == "select") {
+        $$->push_back(VC->idExpr("_READ"));
+      }
+      else if (ARRAYSENABLED && *$1 == "store") {
+        $$->push_back(VC->idExpr("_WRITE"));
+      }
+      else if (BVENABLED && *$1 == "bit0") {
+        $$->push_back(VC->idExpr("_BVCONST"));
+        $$->push_back(VC->ratExpr(0));
+        $$->push_back(VC->ratExpr(1));
+      }
+      else if (BVENABLED && *$1 == "bit1") {
+        $$->push_back(VC->idExpr("_BVCONST"));
+        $$->push_back(VC->ratExpr(1));
+        $$->push_back(VC->ratExpr(1));
+      }
+      else if (BVENABLED && *$1 == "concat") {
+        $$->push_back(VC->idExpr("_CONCAT"));
+      }
+      else if (BVENABLED && *$1 == "bvnot") {
+        $$->push_back(VC->idExpr("_BVNEG"));
+      }
+      else if (BVENABLED && *$1 == "bvand") {
+        $$->push_back(VC->idExpr("_BVAND"));
+      }
+      else if (BVENABLED && *$1 == "bvor") {
+        $$->push_back(VC->idExpr("_BVOR"));
+      }
+      else if (BVENABLED && *$1 == "bvneg") {
+        $$->push_back(VC->idExpr("_BVUMINUS"));
+      }
+      else if (BVENABLED && *$1 == "bvadd") {
+        $$->push_back(VC->idExpr("_BVPLUS"));
+      }
+      else if (BVENABLED && *$1 == "bvmul") {
+        $$->push_back(VC->idExpr("_BVMULT"));
+      }
+      else if (BVENABLED && *$1 == "bvudiv") {
+        $$->push_back(VC->idExpr("_BVUDIV"));
+      }
+      else if (BVENABLED && *$1 == "bvurem") {
+        $$->push_back(VC->idExpr("_BVUREM"));
+      }
+      else if (BVENABLED && *$1 == "bvshl") {
+        $$->push_back(VC->idExpr("_BVSHL"));
+      }
+      else if (BVENABLED && *$1 == "bvlshr") {
+        $$->push_back(VC->idExpr("_BVLSHR"));
+      }
+
+      else if (BVENABLED && *$1 == "bvxor") {
+        $$->push_back(VC->idExpr("_BVXOR"));
+      }
+      else if (BVENABLED && *$1 == "bvxnor") {
+        $$->push_back(VC->idExpr("_BVXNOR"));
+      }
+      else if (BVENABLED && *$1 == "bvcomp") {
+        $$->push_back(VC->idExpr("_BVCOMP"));
+      }
+
+      else if (BVENABLED && *$1 == "bvsub") {
+        $$->push_back(VC->idExpr("_BVSUB"));
+      }
+      else if (BVENABLED && *$1 == "bvsdiv") {
+        $$->push_back(VC->idExpr("_BVSDIV"));
+      }
+      else if (BVENABLED && *$1 == "bvsrem") {
+        $$->push_back(VC->idExpr("_BVSREM"));
+      }
+      else if (BVENABLED && *$1 == "bvsmod") {
+        $$->push_back(VC->idExpr("_BVSMOD"));
+      }
+      else if (BVENABLED && *$1 == "bvashr") {
+        $$->push_back(VC->idExpr("_BVASHR"));
+      }
+
+      // For backwards compatibility:
+      else if (BVENABLED && *$1 == "shift_left0") {
+        $$->push_back(VC->idExpr("_CONST_WIDTH_LEFTSHIFT"));
+      }
+      else if (BVENABLED && *$1 == "shift_right0") {
+        $$->push_back(VC->idExpr("_RIGHTSHIFT"));
+      }
+      else if (BVENABLED && *$1 == "sign_extend") {
+        $$->push_back(VC->idExpr("_SX"));
+        $$->push_back(VC->idExpr("_smtlib"));
+      }
+
+      // Bitvector constants
+      else if (BVENABLED &&
+               $1->size() > 2 &&
+               (*$1)[0] == 'b' &&
+               (*$1)[1] == 'v') {
+        bool done = false;
+        if ((*$1)[2] >= '0' && (*$1)[2] <= '9') {
+          int i = 3;
+          while ((*$1)[i] >= '0' && (*$1)[i] <= '9') ++i;
+          if ((*$1)[i] == '\0') {
+            $$->push_back(VC->idExpr("_BVCONST"));
+            $$->push_back(VC->ratExpr($1->substr(2), 10));
+            $$->push_back(VC->ratExpr(32));
+            done = true;
+          }
+        }
+        else if ($1->size() > 5) {
+          std::string s = $1->substr(0,5);
+          if (s == "bvbin") {
+            int i = 5;
+            while ((*$1)[i] >= '0' && (*$1)[i] <= '1') ++i;
+            if ((*$1)[i] == '\0') {
+              $$->push_back(VC->idExpr("_BVCONST"));
+              $$->push_back(VC->ratExpr($1->substr(5), 2));
+              $$->push_back(VC->ratExpr(i-5));
+              done = true;
+            }
+          }
+          else if (s == "bvhex") {
+            int i = 5;
+            char c = (*$1)[i];
+            while ((c >= '0' && c <= '9') ||
+                   (c >= 'a' && c <= 'f') ||
+                   (c >= 'A' && c <= 'F')) {
+              ++i;
+              c =(*$1)[i];
+            }
+            if ((*$1)[i] == '\0') {
+              $$->push_back(VC->idExpr("_BVCONST"));
+              $$->push_back(VC->ratExpr($1->substr(5), 16));
+              $$->push_back(VC->ratExpr(i-5));
+              done = true;
+            }
+          }
+        }
+        if (!done) $$->push_back(VC->idExpr(*$1));
+      }
+      else {
+        $$->push_back(VC->idExpr(*$1));
+      }
+      delete $1;
+*/
+
+
+
+;
+
 
 an_term:
     basic_term 
@@ -586,47 +849,33 @@ an_term:
       $$ = $2;
       delete $3;
     }
-  | LPAREN_TOK fun_symb an_terms annotations RPAREN_TOK
+
+  | an_fun
     {
-      $2->insert($2->end(), $3->begin(), $3->end());
-      $$ = new CVC3::Expr(VC->listExpr(*$2));
-      delete $2;
-      delete $3;
-      delete $4;
+      $$ = $1;
     }
-  | LPAREN_TOK fun_symb an_terms RPAREN_TOK
+
+  | LPAREN_TOK ITE_TOK an_formula an_term an_term RPAREN_TOK
     {
-      $2->insert($2->end(), $3->begin(), $3->end());
-      $$ = new CVC3::Expr(VC->listExpr(*$2));
-      delete $2;
-      delete $3;
+      $$ = SelectExpr::create($3, $4, $5);
     }
   | LPAREN_TOK ITE_TOK an_formula an_term an_term annotations RPAREN_TOK
     {
-      $$ = new CVC3::Expr(VC->listExpr("_IF", *$3, *$4, *$5));
-      delete $3;
-      delete $4;
-      delete $5;
-      delete $6;
-    }
-  | LPAREN_TOK ITE_TOK an_formula an_term an_term RPAREN_TOK
-    {
-      $$ = new CVC3::Expr(VC->listExpr("_IF", *$3, *$4, *$5));
-      delete $3;
-      delete $4;
-      delete $5;
+      $$ = SelectExpr::create($3, $4, $5);
     }
 ;
 
+
 basic_term:
-  | TRUE_TOK
+    TRUE_TOK
     {
-      $$ = new CVC3::Expr(VC->idExpr("_TRUE_EXPR"));
+      $$ = ConstantExpr::create(1, 1);
     }
   | FALSE_TOK
     { 
-      $$ = new CVC3::Expr(VC->idExpr("_FALSE_EXPR"));
+      $$ = ConstantExpr::create(0, 1);;
     }
+/*
   | fvar
     {
       $$ = $1;
@@ -645,39 +894,25 @@ basic_term:
       }
       delete $1;
     }
-;
 */
+;
+
+
 
-/*
 annotations:
-    annotation
-    {
-      $$->push_back(*$1);
-      delete $1;
-    }
-  | annotations annotation
-    {
-      $1->push_back(*$2);
-      $$ = $1;
-      delete $2;
-    }
-  ;
-*/
+    annotation { }
+  | annotations annotation { }
+;
 
 annotation:
-    attribute
-    { $$ = $1; }
-
-  | attribute user_value
-    { $$ = $1; }
+    attribute { }
 
+  | attribute user_value {  }
 ;
 
-
 user_value:
-    USER_VAL_TOK
+    USER_VAL_TOK  
     {
-      $$ = NULL;
       delete $1;
     }
 ;
@@ -775,7 +1010,9 @@ pred_symb:
       delete $1;
     }
 ;
+*/
 
+/*
 fun_symb:
     SYM_TOK LBRACKET_TOK NUMERAL_TOK RBRACKET_TOK
     {
@@ -828,171 +1065,9 @@ fun_symb:
     }
   | SYM_TOK
     {
-      $$ = new std::vector<CVC3::Expr>;
-      if (BVENABLED && (*$1 == "bvlt" || *$1 == "bvult")) {
-        $$->push_back(VC->idExpr("_BVLT"));
-      }
-      else if (BVENABLED && (*$1 == "bvleq" || *$1 == "bvule")) {
-        $$->push_back(VC->idExpr("_BVLE"));
-      }
-      else if (BVENABLED && (*$1 == "bvgeq" || *$1 == "bvuge")) {
-        $$->push_back(VC->idExpr("_BVGE"));
-      }
-      else if (BVENABLED && (*$1 == "bvgt" || *$1 == "bvugt")) {
-        $$->push_back(VC->idExpr("_BVGT"));
-      }
-      else if (BVENABLED && *$1 == "bvslt") {
-        $$->push_back(VC->idExpr("_BVSLT"));
-      }
-      else if (BVENABLED && (*$1 == "bvsleq" || *$1 == "bvsle")) {
-        $$->push_back(VC->idExpr("_BVSLE"));
-      }
-      else if (BVENABLED && (*$1 == "bvsgeq" || *$1 == "bvsge")) {
-        $$->push_back(VC->idExpr("_BVSGE"));
-      }
-      else if (BVENABLED && *$1 == "bvsgt") {
-        $$->push_back(VC->idExpr("_BVSGT"));
-      }
-      else if (ARRAYSENABLED && *$1 == "select") {
-        $$->push_back(VC->idExpr("_READ"));
-      }
-      else if (ARRAYSENABLED && *$1 == "store") {
-        $$->push_back(VC->idExpr("_WRITE"));
-      }
-      else if (BVENABLED && *$1 == "bit0") {
-        $$->push_back(VC->idExpr("_BVCONST"));
-        $$->push_back(VC->ratExpr(0));
-        $$->push_back(VC->ratExpr(1));
-      }
-      else if (BVENABLED && *$1 == "bit1") {
-        $$->push_back(VC->idExpr("_BVCONST"));
-        $$->push_back(VC->ratExpr(1));
-        $$->push_back(VC->ratExpr(1));
-      }
-      else if (BVENABLED && *$1 == "concat") {
-        $$->push_back(VC->idExpr("_CONCAT"));
-      }
-      else if (BVENABLED && *$1 == "bvnot") {
-        $$->push_back(VC->idExpr("_BVNEG"));
-      }
-      else if (BVENABLED && *$1 == "bvand") {
-        $$->push_back(VC->idExpr("_BVAND"));
-      }
-      else if (BVENABLED && *$1 == "bvor") {
-        $$->push_back(VC->idExpr("_BVOR"));
-      }
-      else if (BVENABLED && *$1 == "bvneg") {
-        $$->push_back(VC->idExpr("_BVUMINUS"));
-      }
-      else if (BVENABLED && *$1 == "bvadd") {
-        $$->push_back(VC->idExpr("_BVPLUS"));
-      }
-      else if (BVENABLED && *$1 == "bvmul") {
-        $$->push_back(VC->idExpr("_BVMULT"));
-      }
-      else if (BVENABLED && *$1 == "bvudiv") {
-        $$->push_back(VC->idExpr("_BVUDIV"));
-      }
-      else if (BVENABLED && *$1 == "bvurem") {
-        $$->push_back(VC->idExpr("_BVUREM"));
-      }
-      else if (BVENABLED && *$1 == "bvshl") {
-        $$->push_back(VC->idExpr("_BVSHL"));
-      }
-      else if (BVENABLED && *$1 == "bvlshr") {
-        $$->push_back(VC->idExpr("_BVLSHR"));
-      }
-
-      else if (BVENABLED && *$1 == "bvxor") {
-        $$->push_back(VC->idExpr("_BVXOR"));
-      }
-      else if (BVENABLED && *$1 == "bvxnor") {
-        $$->push_back(VC->idExpr("_BVXNOR"));
-      }
-      else if (BVENABLED && *$1 == "bvcomp") {
-        $$->push_back(VC->idExpr("_BVCOMP"));
-      }
 
-      else if (BVENABLED && *$1 == "bvsub") {
-        $$->push_back(VC->idExpr("_BVSUB"));
-      }
-      else if (BVENABLED && *$1 == "bvsdiv") {
-        $$->push_back(VC->idExpr("_BVSDIV"));
-      }
-      else if (BVENABLED && *$1 == "bvsrem") {
-        $$->push_back(VC->idExpr("_BVSREM"));
-      }
-      else if (BVENABLED && *$1 == "bvsmod") {
-        $$->push_back(VC->idExpr("_BVSMOD"));
-      }
-      else if (BVENABLED && *$1 == "bvashr") {
-        $$->push_back(VC->idExpr("_BVASHR"));
-      }
-
-      // For backwards compatibility:
-      else if (BVENABLED && *$1 == "shift_left0") {
-        $$->push_back(VC->idExpr("_CONST_WIDTH_LEFTSHIFT"));
-      }
-      else if (BVENABLED && *$1 == "shift_right0") {
-        $$->push_back(VC->idExpr("_RIGHTSHIFT"));
-      }
-      else if (BVENABLED && *$1 == "sign_extend") {
-        $$->push_back(VC->idExpr("_SX"));
-        $$->push_back(VC->idExpr("_smtlib"));
-      }
-
-      // Bitvector constants
-      else if (BVENABLED &&
-               $1->size() > 2 &&
-               (*$1)[0] == 'b' &&
-               (*$1)[1] == 'v') {
-        bool done = false;
-        if ((*$1)[2] >= '0' && (*$1)[2] <= '9') {
-          int i = 3;
-          while ((*$1)[i] >= '0' && (*$1)[i] <= '9') ++i;
-          if ((*$1)[i] == '\0') {
-            $$->push_back(VC->idExpr("_BVCONST"));
-            $$->push_back(VC->ratExpr($1->substr(2), 10));
-            $$->push_back(VC->ratExpr(32));
-            done = true;
-          }
-        }
-        else if ($1->size() > 5) {
-          std::string s = $1->substr(0,5);
-          if (s == "bvbin") {
-            int i = 5;
-            while ((*$1)[i] >= '0' && (*$1)[i] <= '1') ++i;
-            if ((*$1)[i] == '\0') {
-              $$->push_back(VC->idExpr("_BVCONST"));
-              $$->push_back(VC->ratExpr($1->substr(5), 2));
-              $$->push_back(VC->ratExpr(i-5));
-              done = true;
-            }
-          }
-          else if (s == "bvhex") {
-            int i = 5;
-            char c = (*$1)[i];
-            while ((c >= '0' && c <= '9') ||
-                   (c >= 'a' && c <= 'f') ||
-                   (c >= 'A' && c <= 'F')) {
-              ++i;
-              c =(*$1)[i];
-            }
-            if ((*$1)[i] == '\0') {
-              $$->push_back(VC->idExpr("_BVCONST"));
-              $$->push_back(VC->ratExpr($1->substr(5), 16));
-              $$->push_back(VC->ratExpr(i-5));
-              done = true;
-            }
-          }
-        }
-        if (!done) $$->push_back(VC->idExpr(*$1));
-      }
-      else {
-        $$->push_back(VC->idExpr(*$1));
-      }
-      delete $1;
     }
+
   | AR_SYMB 
     { 
       $$ = new std::vector<CVC3::Expr>;
@@ -1028,7 +1103,6 @@ fun_symb:
 ;
 */
 
-
 attribute:
     COLON_TOK SYM_TOK
     {