Fixed #3: Added sheerka.resolve_rule()

Fixed #5: Refactored SheerkaComparisonManager
Fixed #6: Sya parser no longer works after restart
This commit is contained in:
2021-01-15 07:11:04 +01:00
parent e26c83a825
commit 821dbed189
44 changed files with 1617 additions and 1068 deletions
+2 -3
View File
@@ -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()
+3 -2
View File
@@ -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)