Fixed #48 : RelationalExpressionParser: Implement relational operator parser

Fixed #49 : ExpressionParser: Implement ExpressionParser
Fixed #50 : Implement ReteConditionExprVisitor
Fixed #51 : Implement PythonConditionExprVisitor
Fixed #52 : SheerkaConceptManager: I can get and set concept property
This commit is contained in:
2021-03-23 11:35:10 +01:00
parent f8e47e2b38
commit 6cda2686fb
25 changed files with 1083 additions and 978 deletions
+8 -8
View File
@@ -6,20 +6,20 @@ from core.builtin_concepts import ReturnValueConcept
from core.builtin_concepts_ids import BuiltinConcepts
from core.global_symbols import NotInit
from core.sheerka.services.SheerkaExecute import ParserInput
from core.sheerka.services.SheerkaRuleManager import SheerkaRuleManager, FormatAstNode, RuleCompiledPredicate
from core.sheerka.services.SheerkaRuleManager import SheerkaRuleManager, FormatAstNode, CompiledCondition
from core.sheerka.services.sheerka_service import FailedToCompileError
from core.tokenizer import Keywords, TokenKind
from parsers.BaseCustomGrammarParser import BaseCustomGrammarParser, NameNode, KeywordNotFound, SyntaxErrorNode
from parsers.BaseParser import Node, UnexpectedEofParsingError
from sheerkarete.conditions import Condition
from sheerkarete.conditions import AndConditions
@dataclass()
class DefRuleNode(Node):
tokens: dict
name: NameNode = NotInit
when: List[RuleCompiledPredicate] = NotInit
rete: List[List[Condition]] = NotInit
python: List[CompiledCondition] = NotInit
rete: List[AndConditions] = NotInit
@dataclass()
@@ -143,8 +143,8 @@ class DefRuleParser(BaseCustomGrammarParser):
compiled_result = self.get_when(parts[Keywords.WHEN])
if compiled_result is None:
return node
node.when = compiled_result.compiled_predicates
node.rete = compiled_result.rete_disjunctions
node.python = compiled_result.python_conditions
node.rete = compiled_result.rete_conditions
parsed = self.get_then(parts[Keywords.THEN])
if parsed is None:
@@ -162,8 +162,8 @@ class DefRuleParser(BaseCustomGrammarParser):
compiled_result = self.get_when(parts[Keywords.WHEN])
if compiled_result is None:
return node
node.when = compiled_result.compiled_predicates
node.rete = compiled_result.rete_disjunctions
node.python = compiled_result.python_conditions
node.rete = compiled_result.rete_conditions
parsed = self.get_print(parts[Keywords.PRINT])
if parsed is None: