40 Commits

Author SHA1 Message Date
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
Laurenz
e676ab53dd Rename compute to eval ✏ 2020-10-01 15:13:04 +02:00