Files
Sheerka-Old/src/evaluators/BaseEvaluator.py
T
kodjo 54e5681c5a Fixed #109 : Mix python and concept. List comprehension
Fixed #110 : SheerkaDebugManager: add list_debug_settings
Fixed #111 : SheerkaDebugManager: Implement ListDebugLogger
Fixed #112 : SyaNodeParser: rewrite this parser
Fixed #113 : Sheerka.: Add enable_parser_caching to disable parsers caching
Fixed #114 : SyaNodeParser : Implement fast cache to resolve unrecognized tokens requests
Fixed #115 : BnfNodeParser : Implement fast cache to resolve unrecognized tokens requests
Fixed #116 : SequenceNodeParser : Implement fast cache to resolve unrecognized tokens requests
Fixed #117 : ResolveMultiplePluralAmbiguityEvaluator: Resolve Multiple plural ambiguity
2021-09-06 11:51:50 +02:00

76 lines
1.9 KiB
Python

from core.builtin_concepts_ids import BuiltinConcepts
from core.sheerka.Sheerka import ExecutionContext
class BaseEvaluator:
"""
Base class to evaluate ReturnValues
"""
PREFIX = "evaluators."
def __init__(self, name, steps, priority: int, enabled=True):
self.name = BaseEvaluator.get_name(name)
self.short_name = name
self.steps = steps
self.priority = priority
self.enabled = enabled
def __repr__(self):
return f"{self.name} ({self.priority})"
def __eq__(self, other):
if not isinstance(other, BaseEvaluator):
return False
return self.name == other.name and \
self.priority == other.priority and \
self.steps == other.steps and \
self.enabled == other.enabled
def __hash__(self):
return hash((self.name, self.priority, self.steps, self.enabled))
def reset(self):
pass
@staticmethod
def get_name(name):
return BaseEvaluator.PREFIX + name
class OneReturnValueEvaluator(BaseEvaluator):
"""
Evaluate one specific return value
"""
def matches(self, context: ExecutionContext, return_value):
pass
def eval(self, context: ExecutionContext, return_value):
pass
class AllReturnValuesEvaluator(BaseEvaluator):
"""
Evaluates the groups of ReturnValues
"""
def __init__(self, name, steps, priority: int, enabled=True):
super().__init__(name, steps, priority, enabled)
self.eaten = []
def matches(self, context: ExecutionContext, return_values):
pass
def eval(self, context: ExecutionContext, return_values):
pass
def reset(self):
self.eaten.clear()
@staticmethod
def valid_parser_results(context, return_values):
return [ret for ret in return_values if
ret.status and context.sheerka.isinstance(ret.body, BuiltinConcepts.PARSER_RESULT)]