Job Description
Kocelot is an experimental platform for designing and embedding external DSLs into modern web applications. It combines projectional editing with a powerful language definition framework, built to support static analysis, code generation, and reactive integration with runtime services. Our vision is to make DSL engineering more accessible, modular, and production-ready.
In this role, you’ll work on the core of the language definition framework. This includes tools for defining language syntax and semantics, APIs for representing abstract syntax trees (ASTs), and infrastructure for running and caching static analyses like name resolution, type checking, or custom validations.
As part of the team, you will:
- Design and develop tools for language authors to define the syntax and semantics of business DSLs.
- Build and extend the internal engine for running static analysis on user code.
- Develop Kotlin-based APIs and code generation tools for AST modeling and transformation.
- Integrate the language definition layer and the rest of the platform.
- Contribute to the long-term architecture of Kocelot’s language infrastructure.
We will be happy to have you on our team if you have:
- Extensive experience with the Kotlin programming language.
- A strong understanding of programming language theory and static analysis.
- Hands-on experience building or working with DSLs, interpreters, or compilers.
- Previous experience designing and evolving modular APIs.
- The ability to work effectively in a distributed, research-oriented team.
We’ll be especially excited if you have:
- Experience with compiler plugins or code generation tools (e.g. Kotlin Symbol Processing).
- Familiarity with semantic models like name resolution, type inference, or data flow analysis.
- Interest in projectional editors or structure-based programming environments.
- Experience in DSL development with modern language workbenches: JetBrains MPS, Xtext, and others.
Locations
Cyprus (Paphos)Czech Republic (Prague)Serbia (Belgrade)