Skip to main content

No project description provided

Project description

lakai

Lakai is a wrapper around Lark that provides a convenient API.

Installation

$ pip install lakai

Usage

import lakai
grammar = r"""
    %ignore /\s+/
    %import common.INT
    ?atom: INT
    ?!product: atom | product "*" atom | product "/" atom
    ?!sum: product | sum "+" product | sum "-" product
"""
parser = lakai.from_string(grammar, start="sum")
tree = parser.parse("1 + 3 * 2 + 4 / 2")
lakai.pprint(tree)

Gives

sum
    sum
        INT: '1'
        PLUS: '+'
        product
            INT: '3'
            STAR: '*'
            INT: '2'
    PLUS: '+'
    product
        INT: '4'
        SLASH: '/'
        INT: '2'

To evaluate the expression, you can use a lakai.Transformer:

import operator

class Computer(lakai.Transformer):
    operators = {"/": operator.truediv, "*": operator.mul, "-": operator.sub, "+": operator.add}

    def visit_INT(self, leaf: lakai.Leaf) -> int:
        return int(leaf.value)

    def visit_product(self, node: lakai.Node[Any]) -> int:
        return self.operators[node.children[1].value](node.children[0], node.children[2])

    visit_sum = visit_product

assert Computer().visit(tree) == 9

To use Lakai with a Lark standalone parser:

import lakai
from ._standalone import Lark_Standalone
parser = lakai.Lakai(Lark_Standalone())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lakai-0.1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

lakai-0.1.0-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file lakai-0.1.0.tar.gz.

File metadata

  • Download URL: lakai-0.1.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lakai-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c46b3a4d68915daad8f33ba279e3001e23430b1e543fb094fd43f0c221dac6ef
MD5 74885959e75d4c677929741569fd0481
BLAKE2b-256 13b10c5464456ce28ee6bc9d8e17a3dd40c2ff3c3376cfd095afb82316832e9f

See more details on using hashes here.

File details

Details for the file lakai-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: lakai-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lakai-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50bc6ff1c1c19c217587cbcb195ec2fdf1c726362b4cfb2ce2fb55decfb3b4e7
MD5 176920e0a1a02b714377be9e2537ae18
BLAKE2b-256 37b9364ea43e4beefc4f272e9363156a1a62f38b60168ca652ce8f86e733e6a7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page