90 Commits

Author SHA1 Message Date
Laurenz
144f208821 Add file information to spans 2021-08-13 14:33:58 +02:00
Laurenz
8207c31aec Minor refactorings
- Reorder parser methods and use `Pos` everywhere
- Remove tab special handling for columns and adapt heading/list/enum indent handling
- Don't panic when a file has an empty path
2021-08-10 11:28:12 +02:00
Laurenz
3932bb2cb9 New source loading architecture 2021-08-09 11:26:41 +02:00
Laurenz
3c92bad9a7 Pretty-printed diagnostics with traceback 2021-08-01 00:00:36 +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
5edbd3a5b5 Use array's IntoIterator impl and nested or patterns
*yay*
2021-07-16 12:07:15 +02:00
Laurenz
891e0c5fa6 Remove warnings from parsing and casting 2021-07-10 23:14:46 +02:00
Laurenz
551e3af9d0 Replace using with from 2021-07-08 21:16:16 +02:00
Laurenz
4dbd9285c9 Basic enums 2021-06-11 14:00:06 +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
Martin Haug
9f77f09aac Parse import and include expressions
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-31 22:33:40 +02:00
Laurenz
a175d37ff2 Refactor parser a bit 2021-05-21 23:58:34 +02:00
Laurenz
84cdc85ca7 Refresh parser 🌊 2021-02-18 15:06:00 +01:00
Laurenz
146eda102a Move span directly into diagnostics 🚚 2021-02-11 19:26:47 +01:00
Laurenz
06ca740d01 Split evaluation and execution 🔪 2021-02-09 19:46:57 +01:00
Laurenz
d86a5e8a1f Tidy up raw blocks 🧹
- Better trimming (only trim at the end if necessary)
- Fixed block-level layouting
- Improved pretty printing
- Flip inline variable to block
- Flip inline variable to display for math formulas
2021-02-03 21:34:49 +01:00
Laurenz
6fcef9973b Refresh tests 🔄 2021-01-31 22:43:11 +01:00
Laurenz
89eb8bae49 New syntax 💎
- Everything everywhere!
  - Blocks with curly braces: {}
  - Templates with brackets: []
  - Function templates with hashtag: `#[f]`
- Headings with equals sign: `= Introduction`
2021-01-30 12:09:26 +01:00
Laurenz
e847082435 Multi-expression blocks 🛍️ 2021-01-26 21:13:52 +01:00
Laurenz
84ba547c7c If expressions 🔀 2021-01-20 21:33:13 +01:00
Laurenz
29be90bf95 Assertions with [eq] + better tests 🩺 2021-01-17 13:53:22 +01:00
Laurenz
539735e668 Basic let bindings 🎞 2021-01-13 11:54:50 +01:00
Laurenz
3c7d249ae4 Rename token modes ✏ 2021-01-10 20:48:32 +01:00
Laurenz
8275b186ba Remove star-slash token 2021-01-07 16:13:18 +01:00
Laurenz
8cad78481c A few small improvements ♻ 2021-01-01 17:54:31 +01:00
Laurenz
2b6ccd8248 Better parser testing 2021-01-01 16:43:58 +01:00
Laurenz
4069f0744d Parsing improvements 🧽
- Simplified scanner code
- Peek eagerly
- Skip whitespace and comments automatically in header mode
- Parse simple block expressions
- Move literal definitions into expression module
- Raw resolving tests
2020-12-31 17:48:56 +01:00
Laurenz
ba3d43f7b2 Refresh function call and dictionary syntax
- No colon between function name and arguments, just whitespace
- "Named" arguments (previously "keyword" arguments) use colon instead of equals sign
2020-12-27 20:45:20 +01:00
Laurenz
2336aeb4c3 Tweak parser error messages 🔮 2020-12-16 16:24:06 +01:00
Laurenz
1a70cb6a33 Naming and grammar ✔ 2020-10-12 18:01:22 +02:00
Laurenz
d2e220245d Move deco, pass and feedback into diagnostics module ↩ 2020-10-07 18:24:47 +02:00
Laurenz
ef8aa763fa Shorten some names ↔ 2020-10-04 20:22:11 +02:00
Laurenz
dc8d5d2f1e Small improvements 🧺 2020-10-02 20:22:08 +02:00
Laurenz
904bc392ab Remove spans from token iterator 🧽 2020-10-02 19:17:47 +02:00
Laurenz
343982c56f Optimize parser by remembering peeked token 2020-10-02 16:52:01 +02:00
Laurenz
3533268b1f Refactor parser 🏞 2020-10-02 15:43:29 +02:00
Laurenz
01405902ba Restructure parser files 🍔 2020-09-30 19:13:55 +02:00
Laurenz
4077a7c11e Refactor raw blocks 💱 2020-09-30 18:59:33 +02:00
Laurenz
3c3730425f SpanWith trait ↔ 2020-09-30 14:38:46 +02:00
Laurenz
bc1b4216a8 Reorganize syntax types into two modules 📦 2020-09-30 12:45:33 +02:00