Fixed bug when evaluating numbers several times
This commit is contained in:
@@ -294,27 +294,8 @@ class BnfDefinitionParser(BaseParser):
|
||||
expression.rule_name = token.value
|
||||
self.next_token()
|
||||
|
||||
if BnfDefinitionParser.is_expression_a_set(self.context, expression):
|
||||
root_concept = self.context.search(start_with_self=True,
|
||||
predicate=lambda ec: ec.action == BuiltinConcepts.INIT_BNF,
|
||||
get_obj=lambda ec: ec.action_context,
|
||||
stop=lambda ec: ec.action == BuiltinConcepts.INIT_BNF)
|
||||
root_concept = list(root_concept)
|
||||
if root_concept and hasattr(root_concept[0], "id"):
|
||||
expression.recurse_id = expression.get_recurse_id(root_concept[0].id,
|
||||
expression.concept.id,
|
||||
expression.rule_name)
|
||||
|
||||
return expression
|
||||
|
||||
@staticmethod
|
||||
def is_expression_a_set(context, expression):
|
||||
return isinstance(expression, ConceptExpression) and context.sheerka.isaset(context, expression.concept)
|
||||
|
||||
@staticmethod
|
||||
def update_recurse_id(context, concept_id, expression):
|
||||
if BnfDefinitionParser.is_expression_a_set(context, expression):
|
||||
expression.recurse_id = expression.get_recurse_id(concept_id, expression.concept.id, expression.rule_name)
|
||||
|
||||
for element in expression.elements:
|
||||
BnfDefinitionParser.update_recurse_id(context, concept_id, element)
|
||||
|
||||
Reference in New Issue
Block a user