Implemented a first and basic version of a Rete rule engine
This commit is contained in:
@@ -2,13 +2,13 @@ import core.utils
|
||||
from core.ast_helpers import UnreferencedVariablesVisitor
|
||||
from core.builtin_concepts import ParserResultConcept, ReturnValueConcept, BuiltinConcepts
|
||||
from core.concept import Concept, DEFINITION_TYPE_BNF, DEFINITION_TYPE_DEF
|
||||
from core.global_symbols import NotInit
|
||||
from core.sheerka.services.SheerkaExecute import ParserInput
|
||||
from core.tokenizer import TokenKind, Tokenizer
|
||||
from evaluators.BaseEvaluator import OneReturnValueEvaluator
|
||||
from parsers.BaseParser import NotInitializedNode
|
||||
from parsers.BnfNodeParser import ParsingExpression, ParsingExpressionVisitor
|
||||
from parsers.DefConceptParser import DefConceptNode, NameNode
|
||||
from parsers.PythonParser import PythonNode, get_python_node
|
||||
from parsers.PythonParser import get_python_node
|
||||
|
||||
|
||||
class ConceptOrRuleNameVisitor(ParsingExpressionVisitor):
|
||||
@@ -70,7 +70,7 @@ class DefConceptEvaluator(OneReturnValueEvaluator):
|
||||
part_ret_val = getattr(def_concept_node, prop)
|
||||
|
||||
# put back the sources
|
||||
if isinstance(part_ret_val, NotInitializedNode):
|
||||
if part_ret_val is NotInit:
|
||||
continue
|
||||
elif isinstance(part_ret_val, NameNode):
|
||||
source = str(part_ret_val)
|
||||
@@ -107,7 +107,7 @@ class DefConceptEvaluator(OneReturnValueEvaluator):
|
||||
concept.init_key(key_source)
|
||||
|
||||
# update the bnf definition if needed
|
||||
if not isinstance(def_concept_node.definition, NotInitializedNode) and \
|
||||
if def_concept_node.definition is not NotInit and \
|
||||
def_concept_node.definition_type == DEFINITION_TYPE_BNF:
|
||||
concept.set_bnf(def_concept_node.definition.value.value)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user