diff --git a/lark/load_grammar.py b/lark/load_grammar.py index 4b8e7fe..460af8a 100644 --- a/lark/load_grammar.py +++ b/lark/load_grammar.py @@ -313,7 +313,7 @@ class PrepareLiterals(InlineTransformer): class SplitLiterals(InlineTransformer): def pattern(self, p): if isinstance(p, PatternStr) and len(p.value)>1: - return T('expansion', [T('pattern', [PatternStr(ch)]) for ch in p.value]) + return T('expansion', [T('pattern', [PatternStr(ch, flags=p.flags)]) for ch in p.value]) return T('pattern', [p]) class TokenTreeToPattern(Transformer): diff --git a/tests/test_parser.py b/tests/test_parser.py index 6063096..4a2171c 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -568,6 +568,14 @@ def _make_parser_test(LEXER, PARSER): tree = l.parse('AB,a') self.assertEqual(tree.children, ['AB']) + def test_token_flags3(self): + l = _Lark("""!start: ABC+ + ABC: "abc"i + """ + ) + tree = l.parse('aBcAbC') + self.assertEqual(tree.children, ['aBc', 'AbC']) + def test_token_flags2(self): g = """!start: ("a"i | /a/ /b/?)+ """