From d06cf394473cbe09c2e1acc333526c41a6dd9687 Mon Sep 17 00:00:00 2001 From: Andres Noetzli Date: Sat, 28 Sep 2019 20:18:22 -0700 Subject: Introduce template classes for simple type rules (#2835) This commit introduces two template classes `SimpleTypeRule` and `SimpleTypeRuleVar` to help define simple type rules without writing lots of redundant code. The main advantages of this approach are: - Less code - More consistent error reporting - Easier to extend type checking with other functionality (e.g. getting the type of a symbol) --- src/theory/strings/kinds | 68 ++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) (limited to 'src/theory/strings/kinds') diff --git a/src/theory/strings/kinds b/src/theory/strings/kinds index 715ea8f50..4e90d1583 100644 --- a/src/theory/strings/kinds +++ b/src/theory/strings/kinds @@ -55,7 +55,7 @@ constant CONST_STRING \ "util/regexp.h" \ "a string of characters" -typerule CONST_STRING ::CVC4::theory::strings::StringConstantTypeRule +typerule CONST_STRING "SimpleTypeRule" # equal equal / less than / output operator STRING_TO_REGEXP 1 "convert string to regexp" @@ -73,41 +73,41 @@ operator REGEXP_SIGMA 0 "regexp all characters" #internal operator REGEXP_RV 1 "regexp rv (internal use only)" -typerule REGEXP_RV ::CVC4::theory::strings::RegExpRVTypeRule +typerule REGEXP_RV "SimpleTypeRule" #typerules -typerule REGEXP_CONCAT ::CVC4::theory::strings::RegExpConcatTypeRule -typerule REGEXP_UNION ::CVC4::theory::strings::RegExpUnionTypeRule -typerule REGEXP_INTER ::CVC4::theory::strings::RegExpInterTypeRule -typerule REGEXP_STAR ::CVC4::theory::strings::RegExpStarTypeRule -typerule REGEXP_PLUS ::CVC4::theory::strings::RegExpPlusTypeRule -typerule REGEXP_OPT ::CVC4::theory::strings::RegExpOptTypeRule +typerule REGEXP_CONCAT "SimpleTypeRuleVar" +typerule REGEXP_UNION "SimpleTypeRuleVar" +typerule REGEXP_INTER "SimpleTypeRuleVar" +typerule REGEXP_STAR "SimpleTypeRule" +typerule REGEXP_PLUS "SimpleTypeRule" +typerule REGEXP_OPT "SimpleTypeRule" typerule REGEXP_RANGE ::CVC4::theory::strings::RegExpRangeTypeRule -typerule REGEXP_LOOP ::CVC4::theory::strings::RegExpLoopTypeRule - -typerule STRING_TO_REGEXP ::CVC4::theory::strings::StringToRegExpTypeRule - -typerule STRING_CONCAT ::CVC4::theory::strings::StringConcatTypeRule -typerule STRING_LENGTH ::CVC4::theory::strings::StringLengthTypeRule -typerule STRING_SUBSTR ::CVC4::theory::strings::StringSubstrTypeRule -typerule STRING_CHARAT ::CVC4::theory::strings::StringCharAtTypeRule -typerule STRING_STRCTN ::CVC4::theory::strings::StringRelationTypeRule -typerule STRING_LT ::CVC4::theory::strings::StringRelationTypeRule -typerule STRING_LEQ ::CVC4::theory::strings::StringRelationTypeRule -typerule STRING_STRIDOF ::CVC4::theory::strings::StringIndexOfTypeRule -typerule STRING_STRREPL ::CVC4::theory::strings::StringReplaceTypeRule -typerule STRING_STRREPLALL ::CVC4::theory::strings::StringReplaceTypeRule -typerule STRING_PREFIX ::CVC4::theory::strings::StringPrefixOfTypeRule -typerule STRING_SUFFIX ::CVC4::theory::strings::StringSuffixOfTypeRule -typerule STRING_ITOS ::CVC4::theory::strings::StringIntToStrTypeRule -typerule STRING_STOI ::CVC4::theory::strings::StringStrToIntTypeRule -typerule STRING_CODE ::CVC4::theory::strings::StringStrToIntTypeRule -typerule STRING_TOUPPER ::CVC4::theory::strings::StringStrToStrTypeRule -typerule STRING_TOLOWER ::CVC4::theory::strings::StringStrToStrTypeRule - -typerule STRING_IN_REGEXP ::CVC4::theory::strings::StringInRegExpTypeRule - -typerule REGEXP_EMPTY ::CVC4::theory::strings::EmptyRegExpTypeRule -typerule REGEXP_SIGMA ::CVC4::theory::strings::SigmaRegExpTypeRule +typerule REGEXP_LOOP "SimpleTypeRule>" + +typerule STRING_TO_REGEXP "SimpleTypeRule" + +typerule STRING_CONCAT "SimpleTypeRuleVar" +typerule STRING_LENGTH "SimpleTypeRule" +typerule STRING_SUBSTR "SimpleTypeRule" +typerule STRING_CHARAT "SimpleTypeRule" +typerule STRING_STRCTN "SimpleTypeRule" +typerule STRING_LT "SimpleTypeRule" +typerule STRING_LEQ "SimpleTypeRule" +typerule STRING_STRIDOF "SimpleTypeRule" +typerule STRING_STRREPL "SimpleTypeRule" +typerule STRING_STRREPLALL "SimpleTypeRule" +typerule STRING_PREFIX "SimpleTypeRule" +typerule STRING_SUFFIX "SimpleTypeRule" +typerule STRING_ITOS "SimpleTypeRule" +typerule STRING_STOI "SimpleTypeRule" +typerule STRING_CODE "SimpleTypeRule" +typerule STRING_TOUPPER "SimpleTypeRule" +typerule STRING_TOLOWER "SimpleTypeRule" + +typerule STRING_IN_REGEXP "SimpleTypeRule" + +typerule REGEXP_EMPTY "SimpleTypeRule" +typerule REGEXP_SIGMA "SimpleTypeRule" endtheory -- cgit v1.2.3