summaryrefslogtreecommitdiff
path: root/src/parser/smt/Smt.g
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/smt/Smt.g')
-rw-r--r--src/parser/smt/Smt.g21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/parser/smt/Smt.g b/src/parser/smt/Smt.g
index 56bedce81..d03cbf47e 100644
--- a/src/parser/smt/Smt.g
+++ b/src/parser/smt/Smt.g
@@ -255,7 +255,7 @@ predicateName[std::string& name, CVC4::parser::DeclarationCheck check]
* @param check what kind of check to do with the symbol
*/
functionName[std::string& name, CVC4::parser::DeclarationCheck check]
- : identifier[name,check,SYM_FUNCTION]
+ : identifier[name,check,SYM_VARIABLE]
;
/**
@@ -267,7 +267,7 @@ functionSymbol[CVC4::Expr& fun]
}
: functionName[name,CHECK_DECLARED]
{ ANTLR_INPUT->checkFunction(name);
- fun = ANTLR_INPUT->getFunction(name); }
+ fun = ANTLR_INPUT->getVariable(name); }
;
/**
@@ -277,8 +277,6 @@ attribute
: ATTR_IDENTIFIER
;
-
-
functionDeclaration
@declarations {
std::string name;
@@ -288,7 +286,11 @@ functionDeclaration
t = sortSymbol // require at least one sort
{ sorts.push_back(t); }
sortList[sorts] RPAREN_TOK
- { t = ANTLR_INPUT->functionType(sorts);
+ { if( sorts.size() == 1 ) {
+ Assert( t == sorts[0] );
+ } else {
+ t = EXPR_MANAGER->mkFunctionType(sorts);
+ }
ANTLR_INPUT->mkVar(name, t); }
;
@@ -301,7 +303,12 @@ predicateDeclaration
std::vector<Type*> p_sorts;
}
: LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK
- { Type *t = ANTLR_INPUT->predicateType(p_sorts);
+ { Type *t;
+ if( p_sorts.empty() ) {
+ t = EXPR_MANAGER->booleanType();
+ } else {
+ t = EXPR_MANAGER->mkPredicateType(p_sorts);
+ }
ANTLR_INPUT->mkVar(name, t); }
;
@@ -395,7 +402,7 @@ fun_identifier[std::string& id,
{ id = AntlrInput::tokenText($FUN_IDENTIFIER);
Debug("parser") << "fun_identifier: " << id
<< " check? " << toString(check) << std::endl;
- ANTLR_INPUT->checkDeclaration(id, check, SYM_FUNCTION); }
+ ANTLR_INPUT->checkDeclaration(id, check); }
;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback