Starlasu Kotlin provides the infrastructure for building custom, possibly mutable, Abstract Syntax Trees (ASTs).
It supports both Kotlin and Java, and integrates smoothly with ANTLR, though it can also be used standalone.
Starlasu stands for Star Language Support — a family of libraries available for multiple languages, including Python, TypeScript, and C#.
Version | Status | JVM Support | Kotlin Support | Notes |
---|---|---|---|---|
1.5 | Maintenance mode | 1.8 | 1.8 | Actively maintained for legacy compatibility |
1.6 | Abandoned | — | — | Development discontinued |
1.7 | In development | 11 | 2.2 | Current main development branch |
2.0 | Planned | 17 | 2.2 | Future major release with modern JVM and Kotlin support |
Tested with JDK 11, 17, and 21.
Other intermediate versions are expected to work as well.
- Concepts and Principles: Starlasu documentation — shared across all Starlasu libraries.
- API Reference: Javadoc for Starlasu Kotlin.
Starlasu is used to implement:
- Parsers
- Editors
- Transpilers
- Code analysis tools
It serves as a general foundation for projects that need to manipulate or generate language structures.
Extend your AST classes from Node
to automatically gain:
- Navigation: Traverse, search, and modify the AST with utility methods.
- Printing: Output ASTs as XML, JSON, or parse trees.
- LionWev Interoperability: Export ASTs and languages (i.e., metamodels) to LionWeb.
- Name Resolution: Built-in utilities for named elements and reference resolution.
- Automatic Structure Discovery: Starlasu introspects your AST — all properties and tree structure are detected automatically.
Starlasu began as a small framework to support building languages with ANTLR and Kotlin.
It has since evolved into a modular, cross-language toolkit used at Strumenta in both open-source and commercial projects for transpilers, interpreters, compilers, and related tools.
Add the dependency from Maven Central:
dependencies {
implementation "com.strumenta.starlasu:starlasu-core:1.7.x"
}
Format the code using:
./gradlew ktlintFormat
Starlasu (and its predecessor Kolasu) are used in several internal and commercial projects developed at Strumenta.
If you need to publish a new release:
-
Set up GPG keys
brew install gnupg gpg --gen-key
(no passphrase needed)
Export your keys:gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
-
Configure credentials
Add your Sonatype credentials to~/.gradle/gradle.properties
:ossrhTokenUsername=your_username ossrhTokenPassword=your_password
-
Publish the release
./gradlew release
Releases are handled automatically once triggered.
For detailed setup instructions, see
Publishing your first open-source library with Gradle.