Skip to content

Commit

Permalink
Add section to docs speaking about relation of langium files and gene…
Browse files Browse the repository at this point in the history
…rated AST node files
  • Loading branch information
georg-schwarz committed Jan 12, 2024
1 parent cc8c26c commit 34ca10e
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions apps/docs/docs/dev/03-architecture-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ On the pure language side, the central project is the [language server](https://
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](https://microsoft.github.io/language-server-protocol/) (LSP) for communicating with IDEs in order to provide common features such as diagnostics, auto completion and much more.

**Note:** The [Langium framework](https://langium.org/) generate TypeScript files for the AST based on the grammar specification.
The following locations might be especially helpful to understand the grammar and its AST:

- The Langium grammar files (see [here](https://github.com/jvalue/jayvee/tree/main/libs/language-server/src/grammar) or locally at `libs/language-server/src/grammar`; with `.langium` file ending). These files define the **syntax of the language**.
- The generate TypeScript AST files (execute `npm run generate` to generate them at `libs/language-server/src/lib/ast/generated` in your local repository). These files include **AST node interfaces** (e.g., `BlockDefinition`) and **guard methods** (e.g., `isBlockDefinition`).
They reflect the input of the grammar files regarding naming.
- The remaining source files of the language server implement the LSP and the additional validations beyond the syntax of Jayvee.

## Interpreter

The Jayvee [interpreter](https://github.com/jvalue/jayvee/tree/main/apps/interpreter) on the other hand is capable of running Jayvee models.
Expand Down

0 comments on commit 34ca10e

Please sign in to comment.