Fixed #3: Added sheerka.resolve_rule()
Fixed #5: Refactored SheerkaComparisonManager Fixed #6: Sya parser no longer works after restart
This commit is contained in:
@@ -328,15 +328,14 @@ class PythonEvaluator(OneReturnValueEvaluator):
|
||||
:return:
|
||||
"""
|
||||
if isinstance(name, Rule):
|
||||
return name
|
||||
return context.sheerka.resolve_rule(context, name)
|
||||
|
||||
if isinstance(name, Concept):
|
||||
name = core.builtin_helpers.ensure_evaluated(context, name)
|
||||
return name
|
||||
|
||||
if isinstance(name, Token) and name.type == TokenKind.RULE:
|
||||
rule = context.sheerka.get_rule_by_id(name.value[1]) # TODO: need a resolve function for the rules
|
||||
return rule if isinstance(rule, Rule) else None
|
||||
return context.sheerka.resolve_rule(context, name)
|
||||
|
||||
if isinstance(name, tuple):
|
||||
raise Exception()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from core.builtin_concepts import BuiltinConcepts, ParserResultConcept
|
||||
from core.global_symbols import NotFound
|
||||
from core.rule import Rule, ACTION_TYPE_DEFERRED
|
||||
from core.rule import Rule
|
||||
from evaluators.BaseEvaluator import OneReturnValueEvaluator
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@ class RuleEvaluator(OneReturnValueEvaluator):
|
||||
success = True
|
||||
for r in rules:
|
||||
# Browse the rules to find possible deferred rules
|
||||
if r.metadata.action_type == ACTION_TYPE_DEFERRED:
|
||||
# I don't use resolve_rule because I need to have BuiltinConcepts.UNKNOWN_RULE when not found
|
||||
if r.metadata.id_is_unresolved:
|
||||
rule_id = sheerka.get_from_short_term_memory(context, r.id)
|
||||
rule = sheerka.get_rule_by_id(str(rule_id if rule_id is not NotFound else r.id))
|
||||
resolved.append(rule)
|
||||
|
||||
Reference in New Issue
Block a user