mirror of https://github.com/lark-parser/lark.git
51 lines
988 B
Python
51 lines
988 B
Python
|
from __future__ import absolute_import
|
||
|
|
||
|
import sys
|
||
|
import unittest
|
||
|
from unittest import TestCase
|
||
|
|
||
|
from lark.tree import Tree
|
||
|
|
||
|
from lark.tools import standalone
|
||
|
|
||
|
try:
|
||
|
from StringIO import StringIO
|
||
|
except ImportError:
|
||
|
from io import StringIO
|
||
|
|
||
|
class TestStandalone(TestCase):
|
||
|
def setUp(self):
|
||
|
pass
|
||
|
|
||
|
def test_simple(self):
|
||
|
grammar = """
|
||
|
start: NUMBER WORD
|
||
|
|
||
|
%import common.NUMBER
|
||
|
%import common.WORD
|
||
|
%import common.WS
|
||
|
%ignore WS
|
||
|
|
||
|
"""
|
||
|
|
||
|
code_buf = StringIO()
|
||
|
temp = sys.stdout
|
||
|
sys.stdout = code_buf
|
||
|
standalone.main(StringIO(grammar), 'start')
|
||
|
sys.stdout = temp
|
||
|
code = code_buf.getvalue()
|
||
|
|
||
|
context = {}
|
||
|
exec(code, context)
|
||
|
_Lark = context['Lark_StandAlone']
|
||
|
|
||
|
l = _Lark()
|
||
|
x = l.parse('12 elephants')
|
||
|
self.assertEqual(x.children, ['12', 'elephants'])
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|
||
|
|
||
|
|