Browse Source

Added test for cache + inline-transformer

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.11.3
Erez Sh 3 years ago
parent
commit
d2cd300550
1 changed files with 27 additions and 1 deletions
  1. +27
    -1
      tests/test_cache.py

+ 27
- 1
tests/test_cache.py View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import
import sys import sys
from unittest import TestCase, main from unittest import TestCase, main


from lark import Lark, Tree
from lark import Lark, Tree, Transformer
from lark.lexer import Lexer, Token from lark.lexer import Lexer, Token
import lark.lark as lark_module import lark.lark as lark_module


@@ -14,6 +14,13 @@ except ImportError:


import tempfile, os import tempfile, os


class TestT(Transformer):
def add(self, children):
return sum(children if isinstance(children, list) else children.children)

def NUM(self, token):
return int(token)



class MockFile(StringIO): class MockFile(StringIO):
def close(self): def close(self):
@@ -92,6 +99,25 @@ class TestCache(TestCase):
Lark(g, parser="lalr", debug=True, cache=True) Lark(g, parser="lalr", debug=True, cache=True)
parser = Lark(g, parser="lalr", debug=True, cache=True) parser = Lark(g, parser="lalr", debug=True, cache=True)
assert parser.options.options['debug'] assert parser.options.options['debug']

# Test inline transformer (tree-less)
mock_fs.files = {}
g = """
start: add+
add: NUM "+" NUM
NUM: /\d+/
%ignore " "
"""
text = "1+2 3+4"
expected = Tree('start', [3, 7])

parser = Lark(g, parser='lalr', transformer=TestT(), cache=True)
parser = Lark(g, parser='lalr', transformer=TestT(), cache=True)
assert len(mock_fs.files) == 1
res1 = parser.parse(text)
res2 = TestT().transform( Lark(g, parser="lalr", cache=True).parse(text) )
assert res1 == res2

finally: finally:
lark_module.FS = fs lark_module.FS = fs




Loading…
Cancel
Save