Skip to main content
Version: 0.3.0

Architecture overview

Jayvee has a clear separation between the language itself and its execution. This guide gives an overview of the overall architecture.

Language Server

On the pure language side, the central project is the language server which is heavily built upon the Langium framework. It contains the syntax definition (i.e. the grammar) and is capable of performing static semantic analysis on models, so invalid models can be rejected and errors are reported to the user. It uses the Language Server Protocol (LSP) for communicating with IDEs in order to provide common features such as diagnostics, auto completion and much more.

Interpreter

The Jayvee interpreter on the other hand is capable of running Jayvee models. Therefore, it uses the language server as a library to perform lexing, parsing and semantic analysis on given models. In case no errors were found during these phases, it executes the model by interpreting it. This means that models are not compiled to any other language, like a compiler does, but rather directly executed on the fly without any code generation involved. The interpreter comes with a command-line interface (CLI) for users, so they are able to execute Jayvee models easily.

The following diagram visualizes the architecture described so far:

Jayvee Extensions

Lastly, there are Jayvee extensions for adding additional features to Jayvee. See here for more details. It is worth pointing out that extensions also follow the separation between language and execution described above.