Fixed parsing of BNF concepts mixed with isaset concepts
This commit is contained in:
@@ -22,6 +22,16 @@ def c(name, rule_name=None):
|
||||
return ConceptExpression(concept, rule_name=rule_name or name)
|
||||
|
||||
|
||||
def update_concepts_ids(sheerka, parsing_expression):
|
||||
if isinstance(parsing_expression, ConceptExpression):
|
||||
if not parsing_expression.concept.id:
|
||||
concept = sheerka.get_by_key(parsing_expression.concept.key)
|
||||
parsing_expression.concept.metadata.id = concept.id
|
||||
|
||||
for pe in parsing_expression.elements:
|
||||
update_concepts_ids(sheerka, pe)
|
||||
|
||||
|
||||
eof_token = Token(TokenKind.EOF, "", 0, 0, 0)
|
||||
|
||||
|
||||
@@ -109,7 +119,9 @@ class TestBnfParser(TestUsingMemoryBasedSheerka):
|
||||
("def 'concept'", Sequence(c("def"), StrMatch("concept"))),
|
||||
])
|
||||
def test_i_can_parse_regex_with_concept(self, expression, expected):
|
||||
sheerka, context, parser, foo, bar, var, _def = self.init_parser("foo", "bar", "var", "def")
|
||||
sheerka, context, parser, *concepts = self.init_parser("foo", "bar", "var", "def")
|
||||
|
||||
update_concepts_ids(sheerka, expected)
|
||||
|
||||
res = parser.parse(context, Tokenizer(expression))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user