Enhanced ExecutionContext to keep track of the execution flow
This commit is contained in:
@@ -32,9 +32,12 @@ class AddConceptInSetEvaluator(OneReturnValueEvaluator):
|
||||
self.name,
|
||||
True,
|
||||
sheerka.new(BuiltinConcepts.USER_INPUT, body=name_node.tokens, user_name="N/A"))
|
||||
sub_context = context.push(desc=f"Recognizing '{name_node}'")
|
||||
r = sheerka.execute(sub_context, ret_val, ALL_STEPS, self.verbose_log)
|
||||
return core.builtin_helpers.expect_one(context, r)
|
||||
|
||||
with context.push(desc=f"Recognizing '{name_node}'") as sub_context:
|
||||
r = sheerka.execute(sub_context, ret_val, ALL_STEPS, self.verbose_log)
|
||||
one_r = core.builtin_helpers.expect_one(context, r)
|
||||
sub_context.add_values(return_values=one_r)
|
||||
return one_r
|
||||
|
||||
isa_node = return_value.value.value
|
||||
sheerka = context.sheerka
|
||||
|
||||
@@ -66,18 +66,21 @@ class ConceptComposerEvaluator(AllReturnValuesEvaluator):
|
||||
if sheerka.isinstance(concept, BuiltinConcepts.UNKNOWN_CONCEPT):
|
||||
has_error = True
|
||||
else:
|
||||
sub_context = context.push(self.name, desc=f"Evaluating '{concept}'")
|
||||
sub_context.log_new(self.verbose_log)
|
||||
concept = sheerka.evaluate_concept(sub_context, concept, self.verbose_log)
|
||||
temp_res.append(concept)
|
||||
with context.push(self.name, desc=f"Evaluating '{concept}'") as sub_context:
|
||||
sub_context.log_new(self.verbose_log)
|
||||
concept = sheerka.evaluate_concept(sub_context, concept, self.verbose_log)
|
||||
sub_context.add_values(return_values=concept)
|
||||
temp_res.append(concept)
|
||||
|
||||
else:
|
||||
temp_res.append(core.utils.strip_quotes(token.value))
|
||||
concepts_only &= token.type == TokenKind.WHITESPACE or token.type == TokenKind.NEWLINE
|
||||
else:
|
||||
sub_context = context.push(self.name, desc=f"Evaluating '{node.concept}'")
|
||||
sub_context.log_new(self.verbose_log)
|
||||
concept = sheerka.evaluate_concept(sub_context, node.concept, self.verbose_log)
|
||||
temp_res.append(concept)
|
||||
with context.push(self.name, desc=f"Evaluating '{node.concept}'") as sub_context:
|
||||
sub_context.log_new(self.verbose_log)
|
||||
concept = sheerka.evaluate_concept(sub_context, node.concept, self.verbose_log)
|
||||
sub_context.add_values(return_values=concept)
|
||||
temp_res.append(concept)
|
||||
|
||||
if has_error:
|
||||
return sheerka.ret(
|
||||
@@ -104,7 +107,3 @@ class ConceptComposerEvaluator(AllReturnValuesEvaluator):
|
||||
True,
|
||||
res,
|
||||
parents=[self.eaten])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -94,14 +94,15 @@ class PythonEvaluator(OneReturnValueEvaluator):
|
||||
continue
|
||||
|
||||
context.log(self.verbose_log, f"'{name_resolved}' is a concept. Evaluating.", self.name)
|
||||
sub_context = context.push(self.name, desc=f"Evaluating '{concept}'", obj=concept)
|
||||
sub_context.log_new(self.verbose_log)
|
||||
evaluated = context.sheerka.evaluate_concept(sub_context, concept, self.verbose_log)
|
||||
with context.push(self.name, desc=f"Evaluating '{concept}'", obj=concept) as sub_context:
|
||||
sub_context.log_new(self.verbose_log)
|
||||
evaluated = context.sheerka.evaluate_concept(sub_context, concept, self.verbose_log)
|
||||
sub_context.add_values(return_values=evaluated)
|
||||
|
||||
if evaluated.key == concept.key:
|
||||
my_locals[name] = evaluated if return_concept else \
|
||||
evaluated.body if ConceptParts.BODY in evaluated.cached_asts else \
|
||||
evaluated
|
||||
if evaluated.key == concept.key:
|
||||
my_locals[name] = evaluated if return_concept else \
|
||||
evaluated.body if ConceptParts.BODY in evaluated.cached_asts else \
|
||||
evaluated
|
||||
|
||||
if self.locals:
|
||||
my_locals.update(self.locals)
|
||||
|
||||
Reference in New Issue
Block a user