|
|
@@ -186,6 +186,7 @@ def _make_full_earley_test(LEXER): |
|
|
|
l = Lark(grammar, parser='earley', lexer=LEXER) |
|
|
|
l.parse(program) |
|
|
|
|
|
|
|
|
|
|
|
def test_earley_scanless3(self): |
|
|
|
"Tests prioritization and disambiguation for pseudo-terminals (there should be only one result)" |
|
|
|
|
|
|
@@ -940,6 +941,22 @@ def _make_parser_test(LEXER, PARSER): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@unittest.skipIf(LEXER==None, "Scanless doesn't support regular expressions") |
|
|
|
def test_ignore(self): |
|
|
|
grammar = r""" |
|
|
|
COMMENT: /(!|(\/\/))[^\n]*/ |
|
|
|
%ignore COMMENT |
|
|
|
%import common.WS -> _WS |
|
|
|
%import common.INT |
|
|
|
start: "INT"i _WS+ INT _WS* |
|
|
|
""" |
|
|
|
|
|
|
|
parser = _Lark(grammar) |
|
|
|
|
|
|
|
tree = parser.parse("int 1 ! This is a comment\n") |
|
|
|
self.assertEqual(tree.children, ['1']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_NAME = "Test" + PARSER.capitalize() + (LEXER or 'Scanless').capitalize() |
|
|
|
_TestParser.__name__ = _NAME |
|
|
|