Explorar el Código

Added tests for `lark.lark`

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.11.2
MegaIng1 hace 3 años
padre
commit
2fe5f2ed4c
Se han modificado 1 ficheros con 19 adiciones y 4 borrados
  1. +19
    -4
      tests/test_parser.py

+ 19
- 4
tests/test_parser.py Ver fichero

@@ -30,6 +30,7 @@ try:
except ImportError:
regex = None

import lark
from lark import logger
from lark.lark import Lark
from lark.exceptions import GrammarError, ParseError, UnexpectedToken, UnexpectedInput, UnexpectedCharacters
@@ -942,10 +943,24 @@ class DualBytesLark:

def _make_parser_test(LEXER, PARSER):
lexer_class_or_name = CustomLexer if LEXER == 'custom' else LEXER
def _Lark(grammar, **kwargs):
return Lark(grammar, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)
def _Lark_open(gfilename, **kwargs):
return Lark.open(gfilename, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)
if (LEXER, PARSER) == ('standard', 'earley'):
# Check that the `lark.lark` grammar represents can parse every example used in these tests.
# Doesn't matter when we do it, or how often. Just do it for the first entry in `TO_TEST`
lalr_parser = Lark.open(os.path.join(os.path.dirname(lark.__file__), 'grammars/lark.lark'), parser='lalr')
def _Lark(grammar, **kwargs):
inst = Lark(grammar, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)
lalr_parser.parse(inst.source_grammar) # Test after instance creation. When the grammar should fail, don't test it.
return inst
def _Lark_open(gfilename, **kwargs):
inst = Lark.open(gfilename, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)
lalr_parser.parse(inst.source_grammar)
return inst
else:
def _Lark(grammar, **kwargs):
return Lark(grammar, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)
def _Lark_open(gfilename, **kwargs):
return Lark.open(gfilename, lexer=lexer_class_or_name, parser=PARSER, propagate_positions=True, **kwargs)


class _TestParser(unittest.TestCase):
def test_basic1(self):


Cargando…
Cancelar
Guardar