Fixed BNF parsing issues

This commit is contained in:
2020-03-10 18:28:11 +01:00
parent b5d56e13f9
commit c9acfa99a1
4 changed files with 77 additions and 15 deletions
+8 -6
View File
@@ -16,9 +16,9 @@ class ClassWithName:
self.name = name
def c(name):
def c(name, rule_name=None):
concept = Concept(name).init_key()
return ConceptExpression(concept, rule_name=name)
return ConceptExpression(concept, rule_name=rule_name or name)
eof_token = Token(TokenKind.EOF, "", 0, 0, 0)
@@ -94,6 +94,7 @@ class TestBnfParser(TestUsingMemoryBasedSheerka):
("foo | bar?", OrderedChoice(c("foo"), Optional(c("bar")))),
("'str' = var", Sequence(StrMatch("str"), StrMatch("="), c("var"))),
("'str''='var", Sequence(StrMatch("str"), StrMatch("="), c("var"))),
("foo=f", c("foo", "f")),
])
def test_i_can_parse_regex_with_concept(self, expression, expected):
foo = Concept("foo")
@@ -111,10 +112,11 @@ class TestBnfParser(TestUsingMemoryBasedSheerka):
assert res.value.value == expected
assert res.value.source == expression
def test_i_can_parse_regex_with_concept_when_the_concept_is_still_under_definition(self):
expression = "foo"
expected = ConceptExpression("foo")
@pytest.mark.parametrize("expression, expected", [
("foo", ConceptExpression("foo")),
("foo=f", ConceptExpression("foo", rule_name="f")),
])
def test_i_can_parse_regex_with_concept_when_the_concept_is_still_under_definition(self, expression, expected):
context = self.get_context()
context.obj = ClassWithName("foo")