Skip to main content

Kotlin parser in pure Python

Project description

Kopyt

Kopyt is a Kotlin programming language parser in pure Python, inspired by javalang library.

Installation

pip install -U kopyt

Features

  • Supports Kotlin 1.5
  • Zero dependency

Requirements

  • Python 3.7+

Usage

from kopyt import Parser, node

code = """\
package main

import a.b
import x.y.z.*

fun main() {
    println("Hello, world!")
}
"""

parser = Parser(code)
result = parser.parse()

assert result.package is not None
assert result.package.name == "main"

assert len(result.imports) == 2
assert result.imports[0].name == "a.b"
assert result.imports[1].name == "x.y.z"
assert result.imports[1].wildcard

assert len(result.declarations) == 1
assert isinstance(result.declarations[0], node.FunctionDeclaration)
assert result.declarations[0].name == "main"
assert result.declarations[0].position.line == 6

print(result) # this will output a string similar to the original code

All nodes and its members can be found on kopyt/node.py.

Partial Parsing

It is possible to parse partial Kotlin code, for example you want to parse a function declaration:

from kopyt import Parser, node

code = "fun plusOne(x: Int) = x + 1"
parser = Parser(code)
result = parser.parse_function_declaration()

assert result.name == "plusOne"
assert len(result.parameters) == 1
assert result.parameters[0].name == "x"

All parse functions can be found on kopyt/parser.py.

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

kopyt-0.0.2.tar.gz (32.9 kB view hashes)

Uploaded source

Built Distribution

kopyt-0.0.2-py3-none-any.whl (33.8 kB view hashes)

Uploaded py3

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