Added concept 'isa' other_concept functionality

This commit is contained in:
2019-12-21 22:02:07 +01:00
parent 2474b08150
commit a683d4cd42
13 changed files with 489 additions and 61 deletions
+23
View File
@@ -45,6 +45,7 @@ class BuiltinConcepts(Enum):
ENUMERATION = "enum" # represents a list or a set
LIST = "list" # represents a list
CANNOT_RESOLVE_VALUE_ERROR = "value cannot be resolved" # don't know how to find concept value
CONCEPT_ALREADY_IN_SET = "concept already in set"
NODE = "node"
GENERIC_NODE = "generic node"
@@ -68,6 +69,7 @@ BuiltinErrors = [str(e) for e in {
BuiltinConcepts.CONCEPT_ALREADY_DEFINED,
BuiltinConcepts.CONCEPT_EVAL_ERROR,
BuiltinConcepts.CANNOT_RESOLVE_VALUE_ERROR,
BuiltinConcepts.CONCEPT_ALREADY_IN_SET,
}]
"""
@@ -320,3 +322,24 @@ class ListConcept(Concept):
def __contains__(self, item):
return item in self.body
class ConceptAlreadyInSet(Concept):
def __init__(self, concept=None, concept_set=None):
super().__init__(BuiltinConcepts.CONCEPT_ALREADY_IN_SET,
True,
False,
BuiltinConcepts.CONCEPT_ALREADY_IN_SET,
concept)
self.set_prop("concept_set", concept_set)
def __repr__(self):
return f"ConceptAlreadyInSet(concept={self.concept}, concept_set={self.concept_set})"
@property
def concept(self):
return self.body
@property
def concept_set(self):
return self.props["concept_set"].value