summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
authorKshitij Bansal <kshitij@cs.nyu.edu>2015-04-22 14:28:58 -0400
committerKshitij Bansal <kshitij@cs.nyu.edu>2015-04-22 14:28:58 -0400
commitc604492260d0555bdb3cac5ba0863b7223f21777 (patch)
treed86d6f77da10aaef1152218087bf259e92f43843 /src/parser
parent82f4d5bd67f70a561b0f6357f6d6b80c2fcd7b64 (diff)
parent363750b69cc25b6c1d6e8ae89bbd1cd9f03182cd (diff)
Merge pull request #73 from kbansal/parser-dont-tokenize
Parser dont tokenize
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/smt2/Smt2.g190
-rw-r--r--src/parser/smt2/smt2.cpp153
2 files changed, 98 insertions, 245 deletions
diff --git a/src/parser/smt2/Smt2.g b/src/parser/smt2/Smt2.g
index 8dac9915e..acdecf0c4 100644
--- a/src/parser/smt2/Smt2.g
+++ b/src/parser/smt2/Smt2.g
@@ -2042,109 +2042,22 @@ builtinOp[CVC4::Kind& kind]
| MINUS_TOK { $kind = CVC4::kind::MINUS; }
| STAR_TOK { $kind = CVC4::kind::MULT; }
| DIV_TOK { $kind = CVC4::kind::DIVISION; }
- | INTS_DIV_TOK { $kind = CVC4::kind::INTS_DIVISION; }
- | INTS_MOD_TOK { $kind = CVC4::kind::INTS_MODULUS; }
- | ABS_TOK { $kind = CVC4::kind::ABS; }
- | IS_INT_TOK { $kind = CVC4::kind::IS_INTEGER; }
- | TO_INT_TOK { $kind = CVC4::kind::TO_INTEGER; }
- | TO_REAL_TOK { $kind = CVC4::kind::TO_REAL; }
-
- | SELECT_TOK { $kind = CVC4::kind::SELECT; }
- | STORE_TOK { $kind = CVC4::kind::STORE; }
-
- | CONCAT_TOK { $kind = CVC4::kind::BITVECTOR_CONCAT; }
- | BVNOT_TOK { $kind = CVC4::kind::BITVECTOR_NOT; }
- | BVAND_TOK { $kind = CVC4::kind::BITVECTOR_AND; }
- | BVOR_TOK { $kind = CVC4::kind::BITVECTOR_OR; }
- | BVNEG_TOK { $kind = CVC4::kind::BITVECTOR_NEG; }
- | BVADD_TOK { $kind = CVC4::kind::BITVECTOR_PLUS; }
- | BVMUL_TOK { $kind = CVC4::kind::BITVECTOR_MULT; }
- | BVUDIV_TOK { $kind = CVC4::kind::BITVECTOR_UDIV; }
- | BVUREM_TOK { $kind = CVC4::kind::BITVECTOR_UREM; }
- | BVSHL_TOK { $kind = CVC4::kind::BITVECTOR_SHL; }
- | BVLSHR_TOK { $kind = CVC4::kind::BITVECTOR_LSHR; }
- | BVULT_TOK { $kind = CVC4::kind::BITVECTOR_ULT; }
- | BVNAND_TOK { $kind = CVC4::kind::BITVECTOR_NAND; }
- | BVNOR_TOK { $kind = CVC4::kind::BITVECTOR_NOR; }
- | BVXOR_TOK { $kind = CVC4::kind::BITVECTOR_XOR; }
- | BVXNOR_TOK { $kind = CVC4::kind::BITVECTOR_XNOR; }
- | BVCOMP_TOK { $kind = CVC4::kind::BITVECTOR_COMP; }
- | BVSUB_TOK { $kind = CVC4::kind::BITVECTOR_SUB; }
- | BVSDIV_TOK { $kind = CVC4::kind::BITVECTOR_SDIV; }
- | BVSREM_TOK { $kind = CVC4::kind::BITVECTOR_SREM; }
- | BVSMOD_TOK { $kind = CVC4::kind::BITVECTOR_SMOD; }
- | BVASHR_TOK { $kind = CVC4::kind::BITVECTOR_ASHR; }
- | BVULE_TOK { $kind = CVC4::kind::BITVECTOR_ULE; }
- | BVUGT_TOK { $kind = CVC4::kind::BITVECTOR_UGT; }
- | BVUGE_TOK { $kind = CVC4::kind::BITVECTOR_UGE; }
- | BVSLT_TOK { $kind = CVC4::kind::BITVECTOR_SLT; }
- | BVSLE_TOK { $kind = CVC4::kind::BITVECTOR_SLE; }
- | BVSGT_TOK { $kind = CVC4::kind::BITVECTOR_SGT; }
- | BVSGE_TOK { $kind = CVC4::kind::BITVECTOR_SGE; }
| BV2NAT_TOK { $kind = CVC4::kind::BITVECTOR_TO_NAT;
if(PARSER_STATE->strictModeEnabled()) {
PARSER_STATE->parseError("bv2nat and int2bv are not part of SMT-LIB, and aren't available in SMT-LIB strict compliance mode");
} }
- | STRCON_TOK { $kind = CVC4::kind::STRING_CONCAT; }
- | STRLEN_TOK { $kind = CVC4::kind::STRING_LENGTH; }
- | STRSUB_TOK { $kind = CVC4::kind::STRING_SUBSTR; }
- | STRCTN_TOK { $kind = CVC4::kind::STRING_STRCTN; }
- | STRCAT_TOK { $kind = CVC4::kind::STRING_CHARAT; }
- | STRIDOF_TOK { $kind = CVC4::kind::STRING_STRIDOF; }
- | STRREPL_TOK { $kind = CVC4::kind::STRING_STRREPL; }
- | STRPREF_TOK { $kind = CVC4::kind::STRING_PREFIX; }
- | STRSUFF_TOK { $kind = CVC4::kind::STRING_SUFFIX; }
- | STRITOS_TOK { $kind = CVC4::kind::STRING_ITOS; }
- | STRSTOI_TOK { $kind = CVC4::kind::STRING_STOI; }
- | STRU16TOS_TOK { $kind = CVC4::kind::STRING_U16TOS; }
- | STRSTOU16_TOK { $kind = CVC4::kind::STRING_STOU16; }
- | STRU32TOS_TOK { $kind = CVC4::kind::STRING_U32TOS; }
- | STRSTOU32_TOK { $kind = CVC4::kind::STRING_STOU32; }
- | STRINRE_TOK { $kind = CVC4::kind::STRING_IN_REGEXP; }
- | STRTORE_TOK { $kind = CVC4::kind::STRING_TO_REGEXP; }
- | RECON_TOK { $kind = CVC4::kind::REGEXP_CONCAT; }
- | REUNION_TOK { $kind = CVC4::kind::REGEXP_UNION; }
- | REINTER_TOK { $kind = CVC4::kind::REGEXP_INTER; }
- | RESTAR_TOK { $kind = CVC4::kind::REGEXP_STAR; }
- | REPLUS_TOK { $kind = CVC4::kind::REGEXP_PLUS; }
- | REOPT_TOK { $kind = CVC4::kind::REGEXP_OPT; }
- | RERANGE_TOK { $kind = CVC4::kind::REGEXP_RANGE; }
- | RELOOP_TOK { $kind = CVC4::kind::REGEXP_LOOP; }
-
+
| DTSIZE_TOK { $kind = CVC4::kind::DT_SIZE; }
-
| FMFCARD_TOK { $kind = CVC4::kind::CARDINALITY_CONSTRAINT; }
-
| INST_CLOSURE_TOK { $kind = CVC4::kind::INST_CLOSURE; }
- | FP_TOK { $kind = CVC4::kind::FLOATINGPOINT_FP; }
- | FP_EQ_TOK { $kind = CVC4::kind::FLOATINGPOINT_EQ; }
- | FP_ABS_TOK { $kind = CVC4::kind::FLOATINGPOINT_ABS; }
- | FP_NEG_TOK { $kind = CVC4::kind::FLOATINGPOINT_NEG; }
- | FP_PLUS_TOK { $kind = CVC4::kind::FLOATINGPOINT_PLUS; }
- | FP_SUB_TOK { $kind = CVC4::kind::FLOATINGPOINT_SUB; }
- | FP_MUL_TOK { $kind = CVC4::kind::FLOATINGPOINT_MULT; }
- | FP_DIV_TOK { $kind = CVC4::kind::FLOATINGPOINT_DIV; }
- | FP_FMA_TOK { $kind = CVC4::kind::FLOATINGPOINT_FMA; }
- | FP_SQRT_TOK { $kind = CVC4::kind::FLOATINGPOINT_SQRT; }
- | FP_REM_TOK { $kind = CVC4::kind::FLOATINGPOINT_REM; }
- | FP_RTI_TOK { $kind = CVC4::kind::FLOATINGPOINT_RTI; }
- | FP_MIN_TOK { $kind = CVC4::kind::FLOATINGPOINT_MIN; }
- | FP_MAX_TOK { $kind = CVC4::kind::FLOATINGPOINT_MAX; }
- | FP_LEQ_TOK { $kind = CVC4::kind::FLOATINGPOINT_LEQ; }
- | FP_LT_TOK { $kind = CVC4::kind::FLOATINGPOINT_LT; }
- | FP_GEQ_TOK { $kind = CVC4::kind::FLOATINGPOINT_GEQ; }
- | FP_GT_TOK { $kind = CVC4::kind::FLOATINGPOINT_GT; }
- | FP_ISN_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISN; }
- | FP_ISSN_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISSN; }
- | FP_ISZ_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISZ; }
- | FP_ISINF_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISINF; }
- | FP_ISNAN_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISNAN; }
- | FP_ISNEG_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISNEG; }
- | FP_ISPOS_TOK { $kind = CVC4::kind::FLOATINGPOINT_ISPOS; }
- | FP_TO_REAL_TOK {$kind = CVC4::kind::FLOATINGPOINT_TO_REAL; }
- // NOTE: Theory operators go here
+ // NOTE: Theory operators no longer go here, add to smt2.cpp. Only
+ // special cases may go here. When this comment was written (2015
+ // Apr), the special cases were: core theory operators, arith
+ // operators which start with symbols like * / + >= etc, quantifier
+ // theory operators, and operators which depended on parser's state
+ // to accept or reject.
;
quantOp[CVC4::Kind& kind]
@@ -2500,7 +2413,6 @@ FORALL_TOK : 'forall';
GREATER_THAN_TOK : '>';
GREATER_THAN_EQUAL_TOK : '>=';
IMPLIES_TOK : '=>';
-IS_INT_TOK : 'is_int';
LESS_THAN_TOK : '<';
LESS_THAN_EQUAL_TOK : '<=';
MINUS_TOK : '-';
@@ -2509,77 +2421,16 @@ OR_TOK : 'or';
// PERCENT_TOK : '%';
PLUS_TOK : '+';
//POUND_TOK : '#';
-SELECT_TOK : 'select';
STAR_TOK : '*';
-STORE_TOK : 'store';
// TILDE_TOK : '~';
-TO_INT_TOK : 'to_int';
-TO_REAL_TOK : 'to_real';
XOR_TOK : 'xor';
-INTS_DIV_TOK : 'div';
-INTS_MOD_TOK : 'mod';
-ABS_TOK : 'abs';
DIVISIBLE_TOK : 'divisible';
-CONCAT_TOK : 'concat';
-BVNOT_TOK : 'bvnot';
-BVAND_TOK : 'bvand';
-BVOR_TOK : 'bvor';
-BVNEG_TOK : 'bvneg';
-BVADD_TOK : 'bvadd';
-BVMUL_TOK : 'bvmul';
-BVUDIV_TOK : 'bvudiv';
-BVUREM_TOK : 'bvurem';
-BVSHL_TOK : 'bvshl';
-BVLSHR_TOK : 'bvlshr';
-BVULT_TOK : 'bvult';
-BVNAND_TOK : 'bvnand';
-BVNOR_TOK : 'bvnor';
-BVXOR_TOK : 'bvxor';
-BVXNOR_TOK : 'bvxnor';
-BVCOMP_TOK : 'bvcomp';
-BVSUB_TOK : 'bvsub';
-BVSDIV_TOK : 'bvsdiv';
-BVSREM_TOK : 'bvsrem';
-BVSMOD_TOK : 'bvsmod';
-BVASHR_TOK : 'bvashr';
-BVULE_TOK : 'bvule';
-BVUGT_TOK : 'bvugt';
-BVUGE_TOK : 'bvuge';
-BVSLT_TOK : 'bvslt';
-BVSLE_TOK : 'bvsle';
-BVSGT_TOK : 'bvsgt';
-BVSGE_TOK : 'bvsge';
BV2NAT_TOK : 'bv2nat';
INT2BV_TOK : 'int2bv';
-STRCON_TOK : 'str.++';
-STRLEN_TOK : 'str.len';
-STRSUB_TOK : 'str.substr' ;
-STRCTN_TOK : 'str.contains' ;
-STRCAT_TOK : 'str.at' ;
-STRIDOF_TOK : 'str.indexof' ;
-STRREPL_TOK : 'str.replace' ;
-STRPREF_TOK : 'str.prefixof' ;
-STRSUFF_TOK : 'str.suffixof' ;
-STRITOS_TOK : 'int.to.str' ;
-STRSTOI_TOK : 'str.to.int' ;
-STRU16TOS_TOK : 'u16.to.str' ;
-STRSTOU16_TOK : 'str.to.u16' ;
-STRU32TOS_TOK : 'u32.to.str' ;
-STRSTOU32_TOK : 'str.to.u32' ;
-STRINRE_TOK : 'str.in.re';
-STRTORE_TOK : 'str.to.re';
-RECON_TOK : 're.++';
-REUNION_TOK : 're.union';
-REINTER_TOK : 're.inter';
-RESTAR_TOK : 're.*';
-REPLUS_TOK : 're.+';
-REOPT_TOK : 're.opt';
-RERANGE_TOK : 're.range';
-RELOOP_TOK : 're.loop';
RENOSTR_TOK : 're.nostr';
REALLCHAR_TOK : 're.allchar';
@@ -2594,36 +2445,12 @@ EMPTYSET_TOK: { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) }? 'emptyset';
// tokenized and handled directly when
// processing a term
-FP_TOK : 'fp';
FP_PINF_TOK : '+oo';
FP_NINF_TOK : '-oo';
FP_PZERO_TOK : '+zero';
FP_NZERO_TOK : '-zero';
FP_NAN_TOK : 'NaN';
-FP_EQ_TOK : 'fp.eq';
-FP_ABS_TOK : 'fp.abs';
-FP_NEG_TOK : 'fp.neg';
-FP_PLUS_TOK : 'fp.add';
-FP_SUB_TOK : 'fp.sub';
-FP_MUL_TOK : 'fp.mul';
-FP_DIV_TOK : 'fp.div';
-FP_FMA_TOK : 'fp.fma';
-FP_SQRT_TOK : 'fp.sqrt';
-FP_REM_TOK : 'fp.rem';
-FP_RTI_TOK : 'fp.roundToIntegral';
-FP_MIN_TOK : 'fp.min';
-FP_MAX_TOK : 'fp.max';
-FP_LEQ_TOK : 'fp.leq';
-FP_LT_TOK : 'fp.lt';
-FP_GEQ_TOK : 'fp.geq';
-FP_GT_TOK : 'fp.gt';
-FP_ISN_TOK : 'fp.isNormal';
-FP_ISSN_TOK : 'fp.isSubnormal';
-FP_ISZ_TOK : 'fp.isZero';
-FP_ISINF_TOK : 'fp.isInfinite';
-FP_ISNAN_TOK : 'fp.isNaN';
-FP_ISNEG_TOK : 'fp.isNegative';
-FP_ISPOS_TOK : 'fp.isPositive';
+
FP_TO_FP_TOK : 'to_fp';
FP_TO_FPBV_TOK : 'to_fp_bv';
FP_TO_FPFP_TOK : 'to_fp_fp';
@@ -2632,7 +2459,6 @@ FP_TO_FPS_TOK : 'to_fp_signed';
FP_TO_FPU_TOK : 'to_fp_unsigned';
FP_TO_UBV_TOK : 'fp.to_ubv';
FP_TO_SBV_TOK : 'fp.to_sbv';
-FP_TO_REAL_TOK : 'fp.to_real';
FP_RNE_TOK : 'RNE';
FP_RNA_TOK : 'RNA';
FP_RTP_TOK : 'RTP';
diff --git a/src/parser/smt2/smt2.cpp b/src/parser/smt2/smt2.cpp
index 0c1b36655..def9308bb 100644
--- a/src/parser/smt2/smt2.cpp
+++ b/src/parser/smt2/smt2.cpp
@@ -50,35 +50,36 @@ void Smt2::addArithmeticOperators() {
}
void Smt2::addBitvectorOperators() {
- Parser::addOperator(kind::BITVECTOR_CONCAT);
- Parser::addOperator(kind::BITVECTOR_AND);
- Parser::addOperator(kind::BITVECTOR_OR);
- Parser::addOperator(kind::BITVECTOR_XOR);
- Parser::addOperator(kind::BITVECTOR_NOT);
- Parser::addOperator(kind::BITVECTOR_NAND);
- Parser::addOperator(kind::BITVECTOR_NOR);
- Parser::addOperator(kind::BITVECTOR_XNOR);
- Parser::addOperator(kind::BITVECTOR_COMP);
- Parser::addOperator(kind::BITVECTOR_MULT);
- Parser::addOperator(kind::BITVECTOR_PLUS);
- Parser::addOperator(kind::BITVECTOR_SUB);
- Parser::addOperator(kind::BITVECTOR_NEG);
- Parser::addOperator(kind::BITVECTOR_UDIV);
- Parser::addOperator(kind::BITVECTOR_UREM);
- Parser::addOperator(kind::BITVECTOR_SDIV);
- Parser::addOperator(kind::BITVECTOR_SREM);
- Parser::addOperator(kind::BITVECTOR_SMOD);
- Parser::addOperator(kind::BITVECTOR_SHL);
- Parser::addOperator(kind::BITVECTOR_LSHR);
- Parser::addOperator(kind::BITVECTOR_ASHR);
- Parser::addOperator(kind::BITVECTOR_ULT);
- Parser::addOperator(kind::BITVECTOR_ULE);
- Parser::addOperator(kind::BITVECTOR_UGT);
- Parser::addOperator(kind::BITVECTOR_UGE);
- Parser::addOperator(kind::BITVECTOR_SLT);
- Parser::addOperator(kind::BITVECTOR_SLE);
- Parser::addOperator(kind::BITVECTOR_SGT);
- Parser::addOperator(kind::BITVECTOR_SGE);
+ addOperator(kind::BITVECTOR_CONCAT, "concat");
+ addOperator(kind::BITVECTOR_NOT, "bvnot");
+ addOperator(kind::BITVECTOR_AND, "bvand");
+ addOperator(kind::BITVECTOR_OR, "bvor");
+ addOperator(kind::BITVECTOR_NEG, "bvneg");
+ addOperator(kind::BITVECTOR_PLUS, "bvadd");
+ addOperator(kind::BITVECTOR_MULT, "bvmul");
+ addOperator(kind::BITVECTOR_UDIV, "bvudiv");
+ addOperator(kind::BITVECTOR_UREM, "bvurem");
+ addOperator(kind::BITVECTOR_SHL, "bvshl");
+ addOperator(kind::BITVECTOR_LSHR, "bvlshr");
+ addOperator(kind::BITVECTOR_ULT, "bvult");
+ addOperator(kind::BITVECTOR_NAND, "bvnand");
+ addOperator(kind::BITVECTOR_NOR, "bvnor");
+ addOperator(kind::BITVECTOR_XOR, "bvxor");
+ addOperator(kind::BITVECTOR_XNOR, "bvxnor");
+ addOperator(kind::BITVECTOR_COMP, "bvcomp");
+ addOperator(kind::BITVECTOR_SUB, "bvsub");
+ addOperator(kind::BITVECTOR_SDIV, "bvsdiv");
+ addOperator(kind::BITVECTOR_SREM, "bvsrem");
+ addOperator(kind::BITVECTOR_SMOD, "bvsmod");
+ addOperator(kind::BITVECTOR_ASHR, "bvashr");
+ addOperator(kind::BITVECTOR_ULE, "bvule");
+ addOperator(kind::BITVECTOR_UGT, "bvugt");
+ addOperator(kind::BITVECTOR_UGE, "bvuge");
+ addOperator(kind::BITVECTOR_SLT, "bvslt");
+ addOperator(kind::BITVECTOR_SLE, "bvsle");
+ addOperator(kind::BITVECTOR_SGT, "bvsgt");
+ addOperator(kind::BITVECTOR_SGE, "bvsge");
+
Parser::addOperator(kind::BITVECTOR_BITOF);
Parser::addOperator(kind::BITVECTOR_EXTRACT);
Parser::addOperator(kind::BITVECTOR_REPEAT);
@@ -92,34 +93,61 @@ void Smt2::addBitvectorOperators() {
}
void Smt2::addStringOperators() {
- Parser::addOperator(kind::STRING_CONCAT);
- Parser::addOperator(kind::STRING_LENGTH);
+ addOperator(kind::STRING_CONCAT, "str.++");
+ addOperator(kind::STRING_LENGTH, "str.len");
+ addOperator(kind::STRING_SUBSTR, "str.substr" );
+ addOperator(kind::STRING_STRCTN, "str.contains" );
+ addOperator(kind::STRING_CHARAT, "str.at" );
+ addOperator(kind::STRING_STRIDOF, "str.indexof" );
+ addOperator(kind::STRING_STRREPL, "str.replace" );
+ addOperator(kind::STRING_PREFIX, "str.prefixof" );
+ addOperator(kind::STRING_SUFFIX, "str.suffixof" );
+ addOperator(kind::STRING_ITOS, "int.to.str" );
+ addOperator(kind::STRING_STOI, "str.to.int" );
+ addOperator(kind::STRING_U16TOS, "u16.to.str" );
+ addOperator(kind::STRING_STOU16, "str.to.u16" );
+ addOperator(kind::STRING_U32TOS, "u32.to.str" );
+ addOperator(kind::STRING_STOU32, "str.to.u32" );
+ addOperator(kind::STRING_IN_REGEXP, "str.in.re");
+ addOperator(kind::STRING_TO_REGEXP, "str.to.re");
+ addOperator(kind::REGEXP_CONCAT, "re.++");
+ addOperator(kind::REGEXP_UNION, "re.union");
+ addOperator(kind::REGEXP_INTER, "re.inter");
+ addOperator(kind::REGEXP_STAR, "re.*");
+ addOperator(kind::REGEXP_PLUS, "re.+");
+ addOperator(kind::REGEXP_OPT, "re.opt");
+ addOperator(kind::REGEXP_RANGE, "re.range");
+ addOperator(kind::REGEXP_LOOP, "re.loop");
}
void Smt2::addFloatingPointOperators() {
- Parser::addOperator(kind::FLOATINGPOINT_FP);
- Parser::addOperator(kind::FLOATINGPOINT_EQ);
- Parser::addOperator(kind::FLOATINGPOINT_ABS);
- Parser::addOperator(kind::FLOATINGPOINT_NEG);
- Parser::addOperator(kind::FLOATINGPOINT_PLUS);
- Parser::addOperator(kind::FLOATINGPOINT_SUB);
- Parser::addOperator(kind::FLOATINGPOINT_MULT);
- Parser::addOperator(kind::FLOATINGPOINT_DIV);
- Parser::addOperator(kind::FLOATINGPOINT_FMA);
- Parser::addOperator(kind::FLOATINGPOINT_SQRT);
- Parser::addOperator(kind::FLOATINGPOINT_REM);
- Parser::addOperator(kind::FLOATINGPOINT_RTI);
- Parser::addOperator(kind::FLOATINGPOINT_MIN);
- Parser::addOperator(kind::FLOATINGPOINT_MAX);
- Parser::addOperator(kind::FLOATINGPOINT_LEQ);
- Parser::addOperator(kind::FLOATINGPOINT_LT);
- Parser::addOperator(kind::FLOATINGPOINT_GEQ);
- Parser::addOperator(kind::FLOATINGPOINT_GT);
- Parser::addOperator(kind::FLOATINGPOINT_ISN);
- Parser::addOperator(kind::FLOATINGPOINT_ISSN);
- Parser::addOperator(kind::FLOATINGPOINT_ISZ);
- Parser::addOperator(kind::FLOATINGPOINT_ISINF);
- Parser::addOperator(kind::FLOATINGPOINT_ISNAN);
+ addOperator(kind::FLOATINGPOINT_FP, "fp");
+ addOperator(kind::FLOATINGPOINT_EQ, "fp.eq");
+ addOperator(kind::FLOATINGPOINT_ABS, "fp.abs");
+ addOperator(kind::FLOATINGPOINT_NEG, "fp.neg");
+ addOperator(kind::FLOATINGPOINT_PLUS, "fp.add");
+ addOperator(kind::FLOATINGPOINT_SUB, "fp.sub");
+ addOperator(kind::FLOATINGPOINT_MULT, "fp.mul");
+ addOperator(kind::FLOATINGPOINT_DIV, "fp.div");
+ addOperator(kind::FLOATINGPOINT_FMA, "fp.fma");
+ addOperator(kind::FLOATINGPOINT_SQRT, "fp.sqrt");
+ addOperator(kind::FLOATINGPOINT_REM, "fp.rem");
+ addOperator(kind::FLOATINGPOINT_RTI, "fp.roundToIntegral");
+ addOperator(kind::FLOATINGPOINT_MIN, "fp.min");
+ addOperator(kind::FLOATINGPOINT_MAX, "fp.max");
+ addOperator(kind::FLOATINGPOINT_LEQ, "fp.leq");
+ addOperator(kind::FLOATINGPOINT_LT, "fp.lt");
+ addOperator(kind::FLOATINGPOINT_GEQ, "fp.geq");
+ addOperator(kind::FLOATINGPOINT_GT, "fp.gt");
+ addOperator(kind::FLOATINGPOINT_ISN, "fp.isNormal");
+ addOperator(kind::FLOATINGPOINT_ISSN, "fp.isSubnormal");
+ addOperator(kind::FLOATINGPOINT_ISZ, "fp.isZero");
+ addOperator(kind::FLOATINGPOINT_ISINF, "fp.isInfinite");
+ addOperator(kind::FLOATINGPOINT_ISNAN, "fp.isNaN");
+ addOperator(kind::FLOATINGPOINT_ISNEG, "fp.isNegative");
+ addOperator(kind::FLOATINGPOINT_ISPOS, "fp.isPositive");
+ addOperator(kind::FLOATINGPOINT_TO_REAL, "fp.to_real");
+
Parser::addOperator(kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR);
Parser::addOperator(kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT);
Parser::addOperator(kind::FLOATINGPOINT_TO_FP_REAL);
@@ -127,15 +155,14 @@ void Smt2::addFloatingPointOperators() {
Parser::addOperator(kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR);
Parser::addOperator(kind::FLOATINGPOINT_TO_UBV);
Parser::addOperator(kind::FLOATINGPOINT_TO_SBV);
- Parser::addOperator(kind::FLOATINGPOINT_TO_REAL);
}
void Smt2::addTheory(Theory theory) {
switch(theory) {
case THEORY_ARRAYS:
- Parser::addOperator(kind::SELECT);
- Parser::addOperator(kind::STORE);
+ addOperator(kind::SELECT, "select");
+ addOperator(kind::STORE, "store");
break;
case THEORY_BITVECTORS:
@@ -160,16 +187,16 @@ void Smt2::addTheory(Theory theory) {
case THEORY_REALS_INTS:
defineType("Real", getExprManager()->realType());
Parser::addOperator(kind::DIVISION);
- Parser::addOperator(kind::TO_INTEGER);
- Parser::addOperator(kind::IS_INTEGER);
- Parser::addOperator(kind::TO_REAL);
+ addOperator(kind::TO_INTEGER, "to_int");
+ addOperator(kind::IS_INTEGER, "is_int");
+ addOperator(kind::TO_REAL, "to_real");
// falling through on purpose, to add Ints part of Reals_Ints
case THEORY_INTS:
defineType("Int", getExprManager()->integerType());
addArithmeticOperators();
- Parser::addOperator(kind::INTS_DIVISION);
- Parser::addOperator(kind::INTS_MODULUS);
- Parser::addOperator(kind::ABS);
+ addOperator(kind::INTS_DIVISION, "div");
+ addOperator(kind::INTS_MODULUS, "mod");
+ addOperator(kind::ABS, "abs");
Parser::addOperator(kind::DIVISIBLE);
break;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback