當前位置: 首頁>>代碼示例>>Python>>正文


Python lark.Lark方法代碼示例

本文整理匯總了Python中lark.Lark方法的典型用法代碼示例。如果您正苦於以下問題:Python lark.Lark方法的具體用法?Python lark.Lark怎麽用?Python lark.Lark使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在lark的用法示例。


在下文中一共展示了lark.Lark方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: __init__

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def __init__(self, version=None, variant="default"):

        version = version if version else max(available_parsers.keys())

        if version not in available_parsers:
            raise ParserError(f"Unknown parser grammar version: {version}")

        if variant not in available_parsers[version]:
            raise ParserError(f"Unknown variant of the parser: {variant}")

        self.version = version
        self.variant = variant

        with open(available_parsers[version][variant]) as file:
            self.lark = Lark(file)

        self.tree = None
        self.filter = None 
開發者ID:Materials-Consortia,項目名稱:optimade-python-tools,代碼行數:20,代碼來源:lark_parser.py

示例2: main

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def main(s, out_fn):
    graphviz_setup()
    project_root = os.path.normpath(os.path.join(os.path.dirname(__file__), "../../"))
    fld = os.path.normpath(project_root + "./mappyfile")
    gf = os.path.join(fld, "mapfile.lalr.g")
    grammar_text = open(gf).read()

    g = Lark(grammar_text, parser="lalr", lexer="contextual")
    t = g.parse(s)
    print(t)
    pydot__tree_to_png(t, os.path.join(project_root, "docs/images", out_fn))
    print(t.pretty()) 
開發者ID:geographika,項目名稱:mappyfile,代碼行數:14,代碼來源:grammar.py

示例3: _create_lalr_parser

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def _create_lalr_parser(self):
        grammar_text = self.load_grammar("mapfile.lalr.g")
        if self.include_comments:
            callbacks = {'COMMENT': self._comments.append, 'CCOMMENT': self._comments.append}
            extra_args = dict(propagate_positions=True, lexer_callbacks=callbacks)
        else:
            extra_args = {}
        return Lark(grammar_text, parser="lalr", lexer="contextual", **extra_args) 
開發者ID:geographika,項目名稱:mappyfile,代碼行數:10,代碼來源:parser.py

示例4: run

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def run(playlist):
    global parser
    parser = Lark(G.grammar, parser='lalr')
    dirname = os.path.dirname(playlist)

    setFilename(playlist)
    pushDir(dirname)

    with open(playlist) as f:
        tree = parser.parse(f.read())
        # print(tree)
        # print("="*16)
        for t in tree.children:
            do(t) 
開發者ID:hofstadter-io,項目名稱:self-driving-desktop,代碼行數:16,代碼來源:parser.py

示例5: onKeyUp

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def onKeyUp(self, e=None):
		l = Lark(self.grammar["value"], parser=self.parser)

		try:
			ast = l.parse(self.input["value"])
		except Exception as e:
			self.ast.appendChild(
				html5.Li(str(e)), replace=True
			)

		print(ast)
		traverse = lambda node: html5.Li([node.data, html5.Ul([traverse(c) for c in node.children])] if isinstance(node, Tree) else node)
		self.ast.appendChild(traverse(ast), replace=True) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:15,代碼來源:app.py

示例6: create_parser

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def create_parser(self):
        grammar = '''
            anons: ":" "{" "}" "," "[" "]"
            TRUE: "true"
            FALSE: "false"
            NULL: "NULL"
            %import common.ESCAPED_STRING -> STRING
            %import common.SIGNED_NUMBER  -> NUMBER
            %import common.WS
            %ignore WS
        '''

        self.lark = Lark(grammar, parser=None, lexer='standard')
        # All tokens: print([t.name for t in self.lark.parser.lexer.tokens]) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:16,代碼來源:qscintilla_json.py

示例7: test_earley

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def test_earley():

    json_parser = Lark(json_grammar, maybe_placeholders=False)
    tree = json_parser.parse(test_json)

    new_json = Reconstructor(json_parser).reconstruct(tree)
    print (new_json)
    print (json.loads(new_json) == json.loads(test_json)) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:10,代碼來源:reconstruct_json.py

示例8: test_lalr

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def test_lalr():

    json_parser = Lark(json_grammar, parser='lalr', maybe_placeholders=False)
    tree = json_parser.parse(test_json)

    new_json = Reconstructor(json_parser).reconstruct(tree)
    print (new_json)
    print (json.loads(new_json) == json.loads(test_json)) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:10,代碼來源:reconstruct_json.py

示例9: main

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def main():
    if len(sys.argv) == 1 or '-h' in sys.argv or '--help' in sys.argv:
        print("Lark Serialization Tool - Stores Lark's internal state & LALR analysis as a JSON file")
        print("")
        argparser.print_help()
    else:
        args = argparser.parse_args()
        serialize(args.grammar_file, args.out, args.lexer, args.start) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:10,代碼來源:serialize.py

示例10: create_code_for_nearley_grammar

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def create_code_for_nearley_grammar(g, start, builtin_path, folder_path):
    import js2py

    emit_code = []
    def emit(x=None):
        if x:
            emit_code.append(x)
        emit_code.append('\n')

    js_code = ['function id(x) {return x[0];}']
    n2l = NearleyToLark()
    rule_defs = _nearley_to_lark(g, builtin_path, n2l, js_code, folder_path, set())
    lark_g = '\n'.join(rule_defs)
    lark_g += '\n'+'\n'.join('!%s: %s' % item for item in n2l.extra_rules.items())

    emit('from lark import Lark, Transformer')
    emit()
    emit('grammar = ' + repr(lark_g))
    emit()

    for alias, code in n2l.alias_js_code.items():
        js_code.append('%s = (%s);' % (alias, code))

    emit(js2py.translate_js('\n'.join(js_code)))
    emit('class TransformNearley(Transformer):')
    for alias in n2l.alias_js_code:
        emit("    %s = var.get('%s').to_python()" % (alias, alias))
    emit("    __default__ = lambda self, n, c, m: c if c else None")

    emit()
    emit('parser = Lark(grammar, start="n_%s", maybe_placeholders=False)' % start)
    emit('def parse(text):')
    emit('    return TransformNearley().transform(parser.parse(text))')

    return ''.join(emit_code) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:37,代碼來源:nearley.py

示例11: assert_reconstruct

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def assert_reconstruct(self, grammar, code):
        parser = Lark(grammar, parser='lalr', maybe_placeholders=False)
        tree = parser.parse(code)
        new = Reconstructor(parser).reconstruct(tree)
        self.assertEqual(_remove_ws(code), _remove_ws(new)) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:7,代碼來源:test_reconstructor.py

示例12: test_json_example

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def test_json_example(self):
        test_json = '''
            {
                "empty_object" : {},
                "empty_array"  : [],
                "booleans"     : { "YES" : true, "NO" : false },
                "numbers"      : [ 0, 1, -2, 3.3, 4.4e5, 6.6e-7 ],
                "strings"      : [ "This", [ "And" , "That", "And a \\"b" ] ],
                "nothing"      : null
            }
        '''

        json_grammar = r"""
            ?start: value

            ?value: object
                  | array
                  | string
                  | SIGNED_NUMBER      -> number
                  | "true"             -> true
                  | "false"            -> false
                  | "null"             -> null

            array  : "[" [value ("," value)*] "]"
            object : "{" [pair ("," pair)*] "}"
            pair   : string ":" value

            string : ESCAPED_STRING

            %import common.ESCAPED_STRING
            %import common.SIGNED_NUMBER
            %import common.WS

            %ignore WS
        """

        json_parser = Lark(json_grammar, parser='lalr', maybe_placeholders=False)
        tree = json_parser.parse(test_json)

        new_json = Reconstructor(json_parser).reconstruct(tree)
        self.assertEqual(json.loads(new_json), json.loads(test_json)) 
開發者ID:lark-parser,項目名稱:lark,代碼行數:43,代碼來源:test_reconstructor.py

示例13: test_simple

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def test_simple(self):
        g = '''start: "a"'''

        fn = "bla"

        fs = lark_module.FS
        mock_fs = MockFS()
        try:
            lark_module.FS = mock_fs
            Lark(g, parser='lalr', cache=fn)
            assert fn in mock_fs.files
            parser = Lark(g, parser='lalr', cache=fn)
            assert parser.parse('a') == Tree('start', [])

            mock_fs.files = {}
            assert len(mock_fs.files) == 0
            Lark(g, parser='lalr', cache=True)
            assert len(mock_fs.files) == 1
            parser = Lark(g, parser='lalr', cache=True)
            assert parser.parse('a') == Tree('start', [])

            parser = Lark(g+' "b"', parser='lalr', cache=True)
            assert len(mock_fs.files) == 2
            assert parser.parse('ab') == Tree('start', [])

            parser = Lark(g, parser='lalr', cache=True)
            assert parser.parse('a') == Tree('start', [])

        finally:
            lark_module.FS = fs 
開發者ID:lark-parser,項目名稱:lark,代碼行數:32,代碼來源:test_cache.py

示例14: lark_parser

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def lark_parser():
        return Lark(grammar, parser='lalr', debug=True) 
開發者ID:simon816,項目名稱:Command-Block-Assembly,代碼行數:4,代碼來源:reader.py

示例15: lark_parser

# 需要導入模塊: import lark [as 別名]
# 或者: from lark import Lark [as 別名]
def lark_parser():
        return Lark(grammar, parser='lalr', debug=True,
                    lexer_callbacks=lexer_callbacks)#, propagate_positions=True) 
開發者ID:simon816,項目名稱:Command-Block-Assembly,代碼行數:5,代碼來源:parser_.py


注:本文中的lark.Lark方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。