73 Commits

Author SHA1 Message Date
Laurenz
fd8160f374 Remove SpanPos in favor of ErrorPos 2022-10-05 13:15:02 +02:00
Laurenz
ddd3b6a82b Tracked memoization 2022-09-21 20:25:57 +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
ed6550fdb0 Bump dependencies 2022-06-10 23:54:16 +02:00
Laurenz
af10b08cc1 Documentation 2022-06-01 16:51:46 +02:00
Laurenz
94b375ce55 Incremental renumbering 2022-06-01 13:49:02 +02:00
Laurenz
0a9172cb15 Enforce and make use of span ordering 2022-05-31 13:19:09 +02:00
Laurenz
9bbebd69dd Numbered spans 2022-05-31 12:37:05 +02:00
Laurenz
91e45458e3 Make values hashable 2022-02-17 12:50:54 +01:00
Laurenz
3739ab7720 Export into rendered images 2022-01-24 17:39:49 +01:00
Laurenz
63c274e7f6 Make clippy happier and remove Str 2021-11-15 17:06:43 +01:00
Laurenz
75fffc1f9b Fine-grained capturing 2021-11-08 11:52:09 +01:00
Laurenz
65fac0e57c Refactoring
Co-Authored-By: Martin <mhaug@live.de>
2021-11-05 13:46:41 +01:00
Martin Haug
4875633acf Change parser 2021-11-05 13:44:49 +01: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
144f208821 Add file information to spans 2021-08-13 14:33:58 +02:00
Laurenz
3c92bad9a7 Pretty-printed diagnostics with traceback 2021-08-01 00:00:36 +02:00
Laurenz
6a4823461f Reference-count complex values
Rename some nodes types
2021-07-10 23:10:17 +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
264a7dedd4 Scheduled maintenance 🔨
- New naming scheme
  - TextNode instead of NodeText
  - CallExpr instead of ExprCall
  - ...
- Less glob imports
- Removes Value::Args variant
- Removes prelude
- Renames Layouted to Fragment
- Moves font into env
- Moves shaping into layout
- Moves frame into separate module
2021-03-19 17:57:31 +01:00
Laurenz
1711b67877 Move all pretty printing into one module and pretty print values 🦋 2021-02-11 17:33:13 +01:00
Laurenz
06ca740d01 Split evaluation and execution 🔪 2021-02-09 19:46:57 +01:00
Laurenz
e847082435 Multi-expression blocks 🛍️ 2021-01-26 21:13:52 +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
51efb0f4d6 Port remaining parser tests 🚚 2021-01-16 15:08:03 +01:00
Laurenz
2e77b1c836 Better value representations, type function 🌐 2021-01-04 21:29:15 +01:00
Laurenz
aae67bd572 Move and rename many things 🚛 2021-01-03 00:12:09 +01:00
Laurenz
8cad78481c A few small improvements ♻ 2021-01-01 17:54:31 +01:00
Laurenz
3a7bfd6bed Remove unused function Spanned::value 🗑 2020-11-16 11:08:36 +01:00
Laurenz
38157b0e0c Synchronous layout 🪀 2020-10-12 17:10:01 +02:00
Laurenz
5a7a32a9ba Streamline generic layouting primitives 🛫 2020-10-05 16:44:35 +02:00
Laurenz
605ab104c5 Better argument parsing 🥙 2020-10-04 22:36:20 +02:00
Laurenz
54e0da59e3 Small documentation fixes 🧾 2020-10-03 18:15:09 +02:00
Laurenz
904bc392ab Remove spans from token iterator 🧽 2020-10-02 19:17:47 +02:00
Laurenz
3533268b1f Refactor parser 🏞 2020-10-02 15:43:29 +02:00
Laurenz
7fcad452b8 Reorganize ast types 🏕 2020-10-01 15:03:37 +02:00
Laurenz
885bfec5d7 Make syntax not depend on parse 📩
This would make it possible to split them into two separate crates.
2020-10-01 11:32:48 +02:00
Laurenz
4077a7c11e Refactor raw blocks 💱 2020-09-30 18:59:33 +02:00
Laurenz
7cc279f7ae Replace line/column with byte positions 🔢 2020-09-30 17:25:09 +02:00
Laurenz
3c3730425f SpanWith trait ↔ 2020-09-30 14:38:46 +02:00
Laurenz
3e791e3337 Move decoration into mod.rs 🔙 2020-09-30 12:49:30 +02:00
Laurenz
bc1b4216a8 Reorganize syntax types into two modules 📦 2020-09-30 12:45:33 +02:00
Laurenz
30f16bbf64 Add Value type and replace dyn-nodes with call-exprs 🏗
- In addition to syntax trees there are now `Value`s, which syntax trees can be evaluated into (e.g. the tree is `5+5` and the value is `10`)
- Parsing is completely pure, function calls are not parsed into nodes, but into simple call expressions, which are resolved later
- Functions aren't dynamic nodes anymore, but simply functions which receive their arguments as a table and the layouting context
- Functions may return any `Value`
- Layouting is powered by functions which return the new `Commands` value, which informs the layouting engine what to do
- When a function returns a non-`Commands` value, the layouter simply dumps the value into the document in monospace
2020-08-16 22:39:21 +02:00
Laurenz
84f30fb735 Remove SpanlessEq 🎃
The new solution is slightly hacky, but way more flexible. All types that implement PartialEq can now be compared spanlessly in tests by manipulating a thread-local boolean that is read in Span's PartialEq implementation.
2020-08-15 15:01:55 +02:00
Laurenz
4b723add38 Take references in TryFromExpr 🔭 2020-08-15 11:58:01 +02:00
Laurenz
dbfb3d2ced Formatting, documentation and small improvements 🧽 2020-08-03 16:04:55 +02:00
Laurenz
d5ff97f42e Move binary into separate crate and tidy dependencies 🎭 2020-08-02 16:56:14 +02:00
Laurenz
533374db14 Refactor argument parsing 🔬 2020-08-02 16:31:34 +02:00