summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2014-09-23 15:34:03 +0200
committerajreynol <andrew.j.reynolds@gmail.com>2014-09-23 15:34:03 +0200
commitff216dc63edd0e9dc50bc38010ea50fa565e7e97 (patch)
tree1a61660f8ae118519a40805b98cb945d80e59825 /src/parser
parent2064e455674aab26e3632da31998bda8b3fff5f9 (diff)
Support :no-pattern.
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/smt2/Smt2.g14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/parser/smt2/Smt2.g b/src/parser/smt2/Smt2.g
index 2efa7b55c..61b898806 100644
--- a/src/parser/smt2/Smt2.g
+++ b/src/parser/smt2/Smt2.g
@@ -1050,7 +1050,7 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
/* attributed expressions */
| LPAREN_TOK ATTRIBUTE_TOK term[expr, f2]
( attribute[expr, attexpr, attr]
- { if(attr == ":pattern" && ! attexpr.isNull()) {
+ { if( ( attr == ":pattern" || attr == ":no-pattern" ) && ! attexpr.isNull()) {
patexprs.push_back( attexpr );
}
}
@@ -1084,7 +1084,13 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
} else if(! patexprs.empty()) {
if( !f2.isNull() && f2.getKind()==kind::INST_PATTERN_LIST ){
for( size_t i=0; i<f2.getNumChildren(); i++ ){
- patexprs.push_back( f2[i] );
+ if( f2[i].getKind()==kind::INST_PATTERN ){
+ patexprs.push_back( f2[i] );
+ }else{
+ std::stringstream ss;
+ ss << "warning: rewrite rules do not support " << f2[i] << " within instantiation pattern list";
+ PARSER_STATE->warning(ss.str());
+ }
}
}
expr2 = MK_EXPR(kind::INST_PATTERN_LIST, patexprs);
@@ -1176,10 +1182,10 @@ attribute[CVC4::Expr& expr,CVC4::Expr& retExpr, std::string& attr]
attr = std::string(":pattern");
retExpr = MK_EXPR(kind::INST_PATTERN, patexprs);
}
- | ATTRIBUTE_NO_PATTERN_TOK LPAREN_TOK term[patexpr, e2]+ RPAREN_TOK
+ | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
{
attr = std::string(":no-pattern");
- PARSER_STATE->attributeNotSupported(attr);
+ retExpr = MK_EXPR(kind::INST_NO_PATTERN, patexpr);
}
| ATTRIBUTE_INST_LEVEL INTEGER_LITERAL
{
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback