Laurenz
ab43bd802e
Renaming and refactoring
2023-03-19 22:39:19 +01:00
Laurenz
a69b587455
Rename formula to equation
2023-03-18 19:27:31 +01:00
Laurenz
62f35602a8
New #[func] macro
2023-03-10 12:55:21 +01:00
Laurenz
6ab7760822
Split up model
module
2023-03-01 16:33:28 +01:00
Laurenz
e218226655
Merge some modules
2022-10-17 20:04:22 +02:00
Laurenz
3760748fdd
Refactor error handling
2022-09-20 19:49:47 +02:00
Laurenz
757a701c1a
A New World
2022-09-20 16:37:15 +02:00
Laurenz
c81e2a5f56
Many fixes
2022-06-14 13:53:02 +02:00
Laurenz
806d9f0d9a
Pure functions!
2022-05-26 17:14:44 +02:00
Laurenz
c010cbc17d
Move route from context to VM
2022-05-25 13:59:06 +02:00
Laurenz
beca01c826
Methods
2022-03-18 23:43:58 +01:00
Laurenz
2890a156d2
Remove classes and improve naming
2022-03-12 14:24:24 +01:00
Laurenz
e1f29d6cb9
Rework the core context
2022-02-23 14:53:55 +01:00
Laurenz
c5e67af22b
Merge eval and layout contexts into Vm
2022-02-17 17:32:56 +01:00
Laurenz
17e3353483
Make values sync
2022-02-17 14:09:26 +01:00
Laurenz
91e45458e3
Make values hashable
2022-02-17 12:50:54 +01:00
Laurenz
6a6753cb69
Better function representation
2022-02-01 12:26:13 +01:00
Laurenz
20b1a38414
Switch from Rc
to Arc
2022-01-31 16:47:00 +01:00
Laurenz
2a3d0f4b39
Set Rules Episode VII: The Set Awakens
2021-12-15 20:27:41 +01:00
Laurenz
fe21c4d399
Set Rules Episode III: Revenge of the packer
2021-12-09 13:42:52 +01:00
Laurenz
75fffc1f9b
Fine-grained capturing
2021-11-08 11:52:09 +01:00
Laurenz
f592662aa0
Rename Arguments
to Args
2021-09-10 12:27:33 +02:00
Laurenz
0dd4ae0a7a
Prune derives
2021-08-21 17:30:21 +02:00
Laurenz
6ae6d86b9c
Separate type for string values
2021-08-14 15:55:39 +02:00
Laurenz
1ee1d078e2
Fatal errors
...
- Makes errors fatal, so that a phase is only reached when all previous phases were error-free
- Parsing still recovers and can produce multiple errors
- Evaluation fails fast and can thus produce only a single error (except for parse errors due to an import)
- The single error that could occur during execution is removed for now
- Removes Value::Error variant
2021-07-30 18:49:19 +02:00
Laurenz
42a27b48df
Change derive order
2021-07-29 22:27:10 +02:00
Laurenz
9fe9b95b7f
Simpler casting
2021-07-11 13:20:53 +02:00
Laurenz
6a4823461f
Reference-count complex values
...
Rename some nodes types
2021-07-10 23:10:17 +02:00
Laurenz
36b3067c19
Eco string 🌱
2021-07-10 13:07:39 +02:00
Laurenz
5afb42ad89
Lists with indent-based parsing
...
- Unordered lists with indent-based parsing and basic layout using stacks
- Headings are now also indent based
- Removes syntax functions since they will be superseded by select & transform
2021-06-09 00:37:13 +02:00
Laurenz
7218892c72
Refactor path handling
2021-06-01 12:55:07 +02:00
Laurenz
e023bf2ac9
Module loading system
...
Detects cyclic imports and loads each module only once per compilation.
2021-05-31 22:33:40 +02:00
Laurenz
14f093bfee
A few predefined colors for testing
2021-05-23 22:59:25 +02:00
Laurenz
72478946c2
Make frames serializable 📚
...
This also makes serialization support non-optional since it's too much feature-management for too little benefit.
2021-04-21 21:17:25 +02:00
Laurenz
5157c1e276
Documentation fixes ✔
2021-03-03 23:32:29 +01:00
Laurenz
c94a18833f
Closures and function definitions 🚀
...
Supports:
- Closure syntax: `(x, y) => z`
- Shorthand for a single argument: `x => y`
- Function syntax: `let f(x) = y`
- Capturing of variables from the environment
- Error messages for too few / many passed arguments
Does not support:
- Named arguments
- Variadic arguments with `..`
2021-03-03 17:53:40 +01:00
Laurenz
06ca740d01
Split evaluation and execution 🔪
2021-02-09 19:46:57 +01:00
Laurenz
e35bbfffcb
Remove captured expression 🗑️
2021-02-07 13:39:05 +01:00
Laurenz
5943f552e5
Capture variable by slot instead of value 🎣
2021-01-30 16:19:57 +01:00
Laurenz
2036663ed2
Capture variables in templates 🔍
2021-01-27 15:05:18 +01:00
Laurenz
ce8138c685
Scope variables in blocks 🏔️
2021-01-27 11:50:51 +01:00
Laurenz
ac788f2082
Many more expressions 🥗
...
Boolean, equality, comparison and assignment expression parsing and evaluation.
2021-01-22 17:16:42 +01:00
Laurenz
84ba547c7c
If expressions 🔀
2021-01-20 21:33:13 +01:00
Laurenz
d763f0f5a6
Split state and scopes, less ref-counting 🔀
2021-01-15 16:53:02 +01:00
Laurenz
aae67bd572
Move and rename many things 🚛
2021-01-03 00:12:09 +01:00
Laurenz
1c40dc42e7
Dynamic values, Types, Arrays, and Dictionaries 🚀
...
- Identifiers are now evaluated as variables instead of being plain values
- Constants like `left` or `bold` are stored as dynamic values containing the respective rust types
- We now distinguish between arrays and dictionaries to make things more intuitive (at the cost of a bit more complex parsing)
- Spans were removed from collections (arrays, dictionaries), function arguments still have spans for the top-level values to enable good diagnostics
2021-01-02 19:37:10 +01:00
Laurenz
13230db68c
Fix some clippy warnings ✔
2020-10-07 19:28:34 +02:00
Laurenz
ef8aa763fa
Shorten some names ↔
2020-10-04 20:22:11 +02:00
Laurenz
f4460f8abd
Style nits 🎈
2020-10-04 19:21:35 +02:00
Laurenz
0f7c70fd93
Separate state and constraints 🧶
2020-10-04 19:06:20 +02:00