Selaa lähdekoodia

Make nearley tool main testable and test it

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Kaspar Emanuel 7 vuotta sitten
vanhempi
commit
b491138d9a
2 muutettua tiedostoa jossa 13 lisäystä ja 19 poistoa
  1. +9
    -8
      lark/tools/nearley.py
  2. +4
    -11
      tests/test_nearley/test_nearley.py

+ 9
- 8
lark/tools/nearley.py Näytä tiedosto

@@ -169,17 +169,18 @@ def create_code_for_nearley_grammar(g, start, builtin_path, folder_path):

return ''.join(emit_code)

def main():
if len(sys.argv) < 3:
print("Reads Nearley grammar (with js functions) outputs an equivalent lark parser.")
print("Usage: %s <nearley_grammar_path> <start_rule> <nearley_lib_path>" % sys.argv[0])
return

fn, start, nearley_lib = sys.argv[1:]
def main(fn, start, nearley_lib):
with codecs.open(fn, encoding='utf8') as f:
grammar = f.read()
print(create_code_for_nearley_grammar(grammar, start, os.path.join(nearley_lib, 'builtin'), os.path.abspath(os.path.dirname(fn))))


if __name__ == '__main__':
main()
if len(sys.argv) < 4:
print("Reads Nearley grammar (with js functions) outputs an equivalent lark parser.")
print("Usage: %s <nearley_grammar_path> <start_rule> <nearley_lib_path>" % sys.argv[0])
sys.exit(1)

fn, start, nearley_lib = sys.argv[1:]

main(fn, start, nearley_lib)

+ 4
- 11
tests/test_nearley/test_nearley.py Näytä tiedosto

@@ -8,10 +8,10 @@ import codecs

logging.basicConfig(level=logging.INFO)

from lark.tools.nearley import create_code_for_nearley_grammar
from lark.tools.nearley import create_code_for_nearley_grammar, main as nearley_tool_main

TEST_PATH = os.path.dirname(__file__)
NEARLEY_PATH = os.path.abspath(os.path.join(TEST_PATH, 'nearley'))
TEST_PATH = os.path.abspath(os.path.dirname(__file__))
NEARLEY_PATH = os.path.join(TEST_PATH, 'nearley')
BUILTIN_PATH = os.path.join(NEARLEY_PATH, 'builtin')

class TestNearley(unittest.TestCase):
@@ -73,14 +73,7 @@ class TestNearley(unittest.TestCase):

def test_utf8_2(self):
fn = os.path.join(TEST_PATH, 'grammars/unicode.ne')
with codecs.open(fn, encoding='utf8') as f:
grammar = f.read()
code = create_code_for_nearley_grammar(grammar, 'main', BUILTIN_PATH, './')
d = {}
exec (code, d)
parse = d['parse']

parse(u'±a')
nearley_tool_main(fn, 'main', NEARLEY_PATH)


if __name__ == '__main__':


Ladataan…
Peruuta
Tallenna