summaryrefslogtreecommitdiff
path: root/src/parser/cvc/Cvc.g
diff options
context:
space:
mode:
authorPaul Meng <baolmeng@gmail.com>2017-04-20 14:04:24 -0500
committerPaul Meng <baolmeng@gmail.com>2017-04-20 14:04:24 -0500
commit7152d6136fc8bd4701d9440ba3eee6bb7bf3a16c (patch)
tree9012cc085fcde111d5a0609441415cdbb1a7b460 /src/parser/cvc/Cvc.g
parentc110fa8d07b5650c671b99797c17822e757bc52f (diff)
Support for relational operators identity and join image
Diffstat (limited to 'src/parser/cvc/Cvc.g')
-rw-r--r--src/parser/cvc/Cvc.g10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/parser/cvc/Cvc.g b/src/parser/cvc/Cvc.g
index 2dc74afdb..b5bad6a2d 100644
--- a/src/parser/cvc/Cvc.g
+++ b/src/parser/cvc/Cvc.g
@@ -209,6 +209,8 @@ tokens {
TRANSPOSE_TOK = 'TRANSPOSE';
PRODUCT_TOK = 'PRODUCT';
TRANSCLOSURE_TOK = 'TCLOSURE';
+ IDEN_TOK = 'IDEN';
+ JOIN_IMAGE_TOK = 'JOIN_IMAGE';
// Strings
@@ -324,6 +326,8 @@ int getOperatorPrecedence(int type) {
case JOIN_TOK:
case TRANSPOSE_TOK:
case PRODUCT_TOK:
+ case IDEN_TOK:
+ case JOIN_IMAGE_TOK:
case TRANSCLOSURE_TOK: return 24;
case LEQ_TOK:
case LT_TOK:
@@ -365,6 +369,7 @@ Kind getOperatorKind(int type, bool& negate) {
case PRODUCT_TOK: return kind::PRODUCT;
case JOIN_TOK: return kind::JOIN;
+ case JOIN_IMAGE_TOK: return kind::JOIN_IMAGE;
// comparisonBinop
case EQUAL_TOK: return kind::EQUAL;
@@ -1509,6 +1514,7 @@ booleanBinop[unsigned& op]
| AND_TOK
| JOIN_TOK
| PRODUCT_TOK
+ | JOIN_IMAGE_TOK
;
comparison[CVC4::Expr& f]
@@ -1706,7 +1712,9 @@ relationTerm[CVC4::Expr& f]
const Datatype& dt = t.getDatatype();
args.insert( args.begin(), dt[0].getConstructor() );
f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
- }
+ }
+ | IDEN_TOK relationTerm[f]
+ { f = MK_EXPR(CVC4::kind::IDEN, f); }
| postfixTerm[f]
;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback