-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into task-caching
- Loading branch information
Showing
160 changed files
with
5,780 additions
and
300 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,243 @@ | ||
--- | ||
sidebar_position: 9 | ||
--- | ||
|
||
# Cell Range | ||
|
||
Cell ranges can be used to select a subset of cells in a 2D data structure, such as a `Sheet`. The syntax for cell ranges follows conventions from spreadsheet-software. Rows are referenced by one-based indices and columns by capitalized characters, ordered alphabetically. | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td class="example-table__highlighted">Cell A1</td> | ||
<td class="example-table__highlighted">Cell B1</td> | ||
<td class="example-table__highlighted">Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td class="example-table__highlighted">Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td class="example-table__highlighted">Cell A3</td> | ||
<td class="example-table__highlighted">Cell B3</td> | ||
<td class="example-table__highlighted">Cell C3</td> | ||
</tr> | ||
</table> | ||
|
||
Cell ranges can be expressed as whole rows using the **`row`** keyword, whole columns using the **`column`** keyword and custom ranges using the **`range`** keyword. | ||
|
||
## Selecting Custom Ranges | ||
|
||
Using the **`range`** keyword, custom ranges can be selected. Ranges must define a start cell and end cell with the syntax `range <start-cell>:<end-cell>`. All cells between these cells are part of the range as if a user had selected the start cell in a spreadsheet-software and dragged the mouse until the end cell. For example `range A1:B2` is a range over four cells, from cell `A1` to `B2`. | ||
|
||
Instead of a specific character or integer, the placeholder `*` denotes the last available cell in the row or column. For example: `A*` is the last cell in column `A` and `*2` is the last cell in row `2`. | ||
|
||
### Examples | ||
The following `CellRangeSelector` block will select the four cells in the top left corner of a `Sheet`: | ||
|
||
<div class="side-by-side__container"> | ||
|
||
```jayvee | ||
block ExampleDataSelector oftype CellRangeSelector { | ||
select: range A1:B2; | ||
} | ||
``` | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td class="example-table__highlighted">Cell A1</td> | ||
<td class="example-table__highlighted">Cell B1</td> | ||
<td>Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td>Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td>Cell A3</td> | ||
<td>Cell B3</td> | ||
<td>Cell C3</td> | ||
</tr> | ||
</table> | ||
</div> | ||
|
||
The following `CellRangeSelector` block will select cells from the first to the last cell in row 2 in a `Sheet`: | ||
|
||
<div class="side-by-side__container"> | ||
|
||
```jayvee | ||
block ExampleDataSelector oftype CellRangeSelector { | ||
select: range A2:*2; | ||
} | ||
``` | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td>Cell A1</td> | ||
<td>Cell B1</td> | ||
<td>Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td class="example-table__highlighted">Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td>Cell A3</td> | ||
<td>Cell B3</td> | ||
<td>Cell C3</td> | ||
</tr> | ||
</table> | ||
</div> | ||
|
||
The following `CellRangeSelector` block will select cells from the top-left most cell to the last cell in column B in a `Sheet`: | ||
|
||
<div class="side-by-side__container"> | ||
|
||
```jayvee | ||
block ExampleDataSelector oftype CellRangeSelector { | ||
select: range A1:B*; | ||
} | ||
``` | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td class="example-table__highlighted">Cell A1</td> | ||
<td class="example-table__highlighted">Cell B1</td> | ||
<td>Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td>Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td class="example-table__highlighted">Cell A3</td> | ||
<td class="example-table__highlighted">Cell B3</td> | ||
<td>Cell C3</td> | ||
</tr> | ||
</table> | ||
</div> | ||
|
||
## Selecting Rows | ||
|
||
Using the **`row`** keyword, individual rows can be selected. For example, `row 2` will select the second row in a `Sheet`. By adding multiple rows to a `Collection<CellRange>`, multiple rows can be selected. | ||
|
||
### Examples | ||
The following `RowDeleter` block will delete the first two rows of a `Sheet`: | ||
|
||
<div class="side-by-side__container"> | ||
|
||
```jayvee | ||
block ExampleRowDeleter oftype RowDeleter { | ||
delete: [row 1, row 2]; | ||
} | ||
``` | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td class="example-table__highlighted">Cell A1</td> | ||
<td class="example-table__highlighted">Cell B1</td> | ||
<td class="example-table__highlighted">Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td class="example-table__highlighted">Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td>Cell A3</td> | ||
<td>Cell B3</td> | ||
<td>Cell C3</td> | ||
</tr> | ||
</table> | ||
</div> | ||
|
||
## Selecting Columns | ||
|
||
Using the **`column`** keyword, individual columns can be selected. For example, `column 2` will select the second column in a `Sheet`. By adding multiple columns to a `Collection<CellRange>`, multiple columns can be selected. | ||
|
||
### Examples | ||
The following `ColumnDeleter` block will delete the first two columns of a `Sheet`: | ||
|
||
<div class="side-by-side__container"> | ||
|
||
```jayvee | ||
block ExampleColumnDeleter oftype ColumnDeleter { | ||
delete: [column A, column B]; | ||
} | ||
``` | ||
|
||
<table> | ||
<tr> | ||
<td></td> | ||
<td>A</td> | ||
<td>B</td> | ||
<td>C</td> | ||
</tr> | ||
<tr> | ||
<td>1</td> | ||
<td class="example-table__highlighted">Cell A1</td> | ||
<td class="example-table__highlighted">Cell B1</td> | ||
<td>Cell C1</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td class="example-table__highlighted">Cell A2</td> | ||
<td class="example-table__highlighted">Cell B2</td> | ||
<td>Cell C2</td> | ||
</tr> | ||
<tr> | ||
<td>3</td> | ||
<td class="example-table__highlighted">Cell A3</td> | ||
<td class="example-table__highlighted">Cell B3</td> | ||
<td>Cell C3</td> | ||
</tr> | ||
</table> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
SPDX-FileCopyrightText: 2024 Friedrich-Alexander-Universitat Erlangen-Nurnberg | ||
|
||
SPDX-License-Identifier: AGPL-3.0-only |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
--- | ||
sidebar_position: 9 | ||
sidebar_position: 10 | ||
--- | ||
|
||
# Runtime Parameters | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
--- | ||
sidebar_position: 1 | ||
--- | ||
|
||
# Introduction for Jayvee Developers | ||
|
||
import MascotImageUrl from '@site/static/img/mascots/mascot3.png'; | ||
|
||
<div style={{ display: 'flex', flexDirection: 'row', flexWrap: 'none', alignItems: 'center'}}> | ||
<div> | ||
<img src={MascotImageUrl} width="400px" style={{ float: 'left' }} /> | ||
</div> | ||
|
||
<span className={"text--center"}> | ||
<h2>"On the tracks of Jayvee's internals"</h2> | ||
</span> | ||
</div> | ||
|
||
## How to contribute | ||
|
||
In order to contribute to the Jayvee project, please have a look at our [contribution guide](https://github.com/jvalue/jayvee/blob/main/CONTRIBUTING.md). Before planning a contribution, please read the [design principles](./05-design-principles.md) and consider if your changes fit the vision expressed there. | ||
|
||
The overall project is licensed under the `AGPL-3.0-only` license and is compliant to the [REUSE Specification](https://reuse.software/spec/) by the [Free Software Foundation Europe](https://fsfe.org/). | ||
Because of this, contributions are required to adhere to the license and follow that specification. | ||
More details on this topic can be found [here](./02-dev-processes/03-licensing-and-copyright.md). | ||
|
||
And last but not least, please read and follow our [code of conduct](https://github.com/jvalue/jayvee/blob/main/CODE_OF_CONDUCT.md). | ||
|
||
## Project overview | ||
|
||
The Jayvee repository is located [here](https://github.com/jvalue/jayvee) on GitHub. | ||
It uses an [Nx mono-repository](https://nx.dev/) setup and contains all related projects, most notably the Jayvee language server and interpreter. | ||
Please have a look at the [architecture overview](./03-architecture-overview.md) for more details. | ||
|
||
## Prerequisites | ||
|
||
Node.js and npm are required for development. | ||
It is recommended to use their LTS version to avoid any potential compatibility issues. | ||
Also, refer to this [quick start guide](https://github.com/jvalue/jayvee#development-quickstart) for developers. | ||
|
||
In order to run the Jayvee VS Code extension during development, VS Code is required as IDE. | ||
Using VS Code also allows installing the [Langium VS Code extension](https://marketplace.visualstudio.com/items?itemName=langium.langium-vscode) for better IDE support when working with Langium grammar files. | ||
|
||
## Resources for getting started | ||
|
||
### Langium | ||
|
||
- [**Langium documentation**](https://langium.org/docs/) | ||
- Practical examples using Langium: | ||
- [Langium examples](https://github.com/langium/langium/tree/main/examples): Official example languages by Langium | ||
- [Langium's grammar language](https://github.com/langium/langium/tree/main/packages/langium): The implementation of Langium's own grammar language | ||
- [Language server for SQL](https://github.com/langium/langium-sql): An implementation of a language server for SQL | ||
- [MiniLogo DSL](https://github.com/langium/langium-minilogo): A domain-specific language for drawing pictures | ||
- [Lox language](https://github.com/langium/langium-lox): An implementation of the Lox scripting language (also see the "Crafting Interpreters" book below) | ||
- [SimpleUI DSL](https://github.com/TypeFox/langium-ui-framework): A domain-specific language for generating user interfaces | ||
- [STPA-DSL](https://github.com/kieler/stpa): A domain-specific language for System-Theoretic Process Analysis | ||
- [Langium playground](https://langium.org/playground/): A tool for testing Langium grammars and visualizing resulting ASTs | ||
- [Typefox blog](https://www.typefox.io/blog/): A blog by the company behind Langium, mostly posting Langium-related content. | ||
|
||
### Building compilers / interpreters / DSLs | ||
|
||
- [Crafting Interpreters](https://craftinginterpreters.com/contents.html): A book by Robert Nystrom on implementing an interpreter for the Lox scripting language | ||
- [DSL Engineering](https://voelter.de/dslbook/markusvoelter-dslengineering-1.0.pdf): A book by Markus Voelter on designing, implementing and using domain-specific languages | ||
- [Awesome Compilers](https://github.com/aalhour/awesome-compilers#readme): A list featuring many resources on compilers and interpreters |
3 changes: 3 additions & 0 deletions
3
apps/docs/versioned_docs/version-0.5.0/dev/01-intro.mdx.license
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg | ||
|
||
SPDX-License-Identifier: AGPL-3.0-only |
13 changes: 13 additions & 0 deletions
13
apps/docs/versioned_docs/version-0.5.0/dev/02-dev-processes/01-rfc-process.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
title: Language Design Process (RFCs) | ||
sidebar_position: 1 | ||
--- | ||
|
||
We use RFCs to discuss changes to the language before implementing them. You can have a look at all closed (accepted / rejected) RFCs [here](https://github.com/jvalue/jayvee/pulls?q=is%3Apr+is%3Aclosed+RFC+), and all RFCs under discussion [here](https://github.com/jvalue/jayvee/pulls?q=is%3Apr+is%3Aopen+RFC). | ||
|
||
If you want to contribute an RFC please follow these steps: | ||
1. Make a copy of the **template** at `rfc/0000-rfc-template.md` and place it into the `rfc` folder. | ||
2. Create a draft for the RFC on a new branch. Follow the `TODOs` in template to do so. | ||
3. Open a pull request with prefix `RFC <number>` in the title. | ||
4. Address the reviews. Consider opening a new PR if major things need to be addressed and the discussion log becomes too confusing. | ||
5. Once accepted, create an issue with the necessary steps to implement the RFC. |
Oops, something went wrong.