6bb855cff7
cl-parser: semantics changes
...
allow let in conditionals (restricts init of let to non-assignment)
allow semicolons after items at file scope
2025-05-18 11:44:44 -04:00
a5590168ee
cl-parser: Misc cleanup
2025-05-18 04:00:43 -04:00
3e2063835b
cl-parser: Dedicated parsing logic for patterns!
2025-05-18 04:00:00 -04:00
e6156343c3
cl-ast: Add inline closure expressions
2025-05-18 03:57:20 -04:00
6c6d2d04a7
cl-ast: Remove variantkind, as it was redundant
2025-05-17 21:28:12 -04:00
cd2e3c3e32
cl-parser: change match parse slightly
2025-05-05 04:16:37 -04:00
d6c0a6cf1b
cl-ast: Allow c-like enums to take an expr
2025-05-05 02:22:50 -04:00
fc80be5fcc
conlang: Remove "self" keyword
2025-05-05 02:20:47 -04:00
8ff17fd475
cl-ast: Add syntax support for generics
2025-04-22 07:22:44 -04:00
7ba808594c
cl-ast: Cleanup
...
- Function bind is now one Pattern
- TyRef now allows &Ty (i.e. &[i32], &(char, bool)
- Range patterns (they cannot bind, only check whether a value is in range
- ArrayRep repeat has been reverted to usize, for now, until early consteval is implemented.
2025-04-21 04:17:45 -04:00
82e62ab4ac
cl-parser: Dereference first(?)
2025-04-15 23:44:56 -04:00
a4176c710e
cl-ast: Add filename to File
...
- Better error reporting
- Better pizza
- Papa Cow's
2025-03-14 04:11:22 -05:00
33e13425a9
cl-ast: Clean up "to", "extents", Module."kind"
2025-03-14 00:52:43 -05:00
11c8daaed0
cl-ast: Re-add(?) the Infer type-pattern
2025-03-12 01:20:58 -05:00
fdf076c272
cl-ast: Remove Option-like "*Kind"s
2025-03-11 23:32:58 -05:00
7e311cb0ef
conlang: RIP THE EXPRKIND BANDAGE OFF
...
cl-ast: No more bare ExprKind: every Expr has a Span
cl-interpret: Give errors a span
cl-repl: Print eval errors in load_file, instead of returning them. These changes are relevant.
2025-03-11 00:36:42 -05:00
e39b390441
cl-parser, cl-repl: Add ./[mod].cl to module search path
2025-02-23 02:44:26 -06:00
2fd08193fd
cl-parser: Promote match scrutinee to position
2025-02-23 02:43:22 -06:00
7d3f189100
conlang: Introduce ..rest Patterns, refactor Ranges
2025-02-23 02:41:41 -06:00
cc6168b55e
cl-ast: Remove Param
, replace with flat Pattern
2025-02-23 02:01:38 -06:00
e3d94d8949
conlang: Unify binding operations!
...
This breaks out the pattern matching/unification algorithm from cl-interpret/interpret.rs to cl-interpret/pattern.rs
TODO: pattern destructuring in const, static :^)
2025-02-22 05:16:37 -06:00
697d139cfd
conlang: Add Tuple-Struct Patterns
...
- Patterns are no longer parsed with the highest precedence
- Function calls with just a path and a tuple of args can now be transformed into a Pattern
2025-02-22 01:37:08 -06:00
5d2c714bc1
conlang: Patterns...2!
...
- Deny arbitrary paths in patterns (only one non-keyword identifier allowed!)
- Allow patterns in for-loop binders (literally useless atm, but it's a step toward making patterns the only way to bind names.)
Next: Functions, Tuple Struct Patterns... And solving the stupid syntactic ambiguity of structors.
2025-02-22 01:00:29 -06:00
772286eefa
conlang: Single-expression functions
2025-02-20 21:59:42 -06:00
edabbe1655
cl-interpret: process use items and imports in the interpreter
2025-02-18 21:44:52 -06:00
6ee9bbd72e
conlang: PATTERN MATCHING AND DESTRUCTURED BINDINGS WOOOOO
...
- Integrate the Match and Pattern nodes into the AST
- TODO: `let x: T` is ambiguous with `let x: {}`. Currently the latter takes precedence in the parser.
- Implement pattern matching through unification in the interpreter.
- It's not fast, but it works!
- Refactor destructuring assignments to use the new pattern functionality
2025-01-29 04:15:33 -06:00
d21683ad61
conlang: Add Quote
expression as a hack for testing
...
Possibly removed later, or replaced with something that turns Conlang AST nodes into Conlang data structures.
2025-01-29 03:56:19 -06:00
518fbe74a1
cl-ast: Fix AddrOf
misbehavior
2025-01-29 03:31:24 -06:00
5deb585054
cl-ast: Add float support
...
- Smuggle floats as integers to maintain `eq`
- This is bad, but not terrible for spec-compliant floats. Might have issues with NaN.
cl_parser: Smuggle floats
cl_interpret: unpack smuggled floats in float literal node
2024-09-19 13:20:19 -05:00
0f8b0824ac
cl-parser: Fix precedence of comparison operators
2024-09-18 00:57:44 -05:00
8675f91aca
cl-ast: Remove tail from let (it caused more problems that it could've solved)
2024-07-31 03:19:20 -05:00
de63a8c123
cl-parser: Outline precedence parser
2024-07-31 02:55:01 -05:00
533436afc1
cl-parser: Move precedence parser into its own module
2024-07-31 02:48:39 -05:00
1eb0516baf
cl-parser: Rearrange to match cl-ast
...
Also reorder `Let` in the AST
2024-07-31 02:35:41 -05:00
97808fd855
cl-parser: Transliterate to a trait-based parsing implementation
...
Bump version number.
2024-07-31 01:39:00 -05:00
388a69948e
Revert "cl-ast: Unify break
, return
, and unary
expressions"
...
This reverts commit adb0fd229c9621ad409871115f1a688ddf67e3f3.
2024-07-30 22:31:39 -05:00
adb0fd229c
cl-ast: Unify break
, return
, and unary
expressions
2024-07-30 20:16:07 -05:00
0e545077c6
cl-ast: Remove "Continue" struct
2024-07-30 19:42:28 -05:00
b64cc232f9
cl-ast: Move loop expression into unary exprs (with lowest priority)
2024-07-30 18:21:25 -05:00
b0341f06fd
cl-ast: Move let
into Expr
2024-07-30 18:02:09 -05:00
a3e383b53f
cl-token: Flatten TokenKind into a single enum (wow!)
2024-07-30 16:47:09 -05:00
883c2677d9
cl-parser: Index is NOT a low precedence operator!!!
2024-07-27 17:37:29 -05:00
e43847bbd4
conlang: Introduce as
casting
...
Arbitrary primitive type conversion
Currently implemented as jankily as possible in the interpreter, but it works alright™️
2024-07-26 05:26:08 -05:00
3511575669
conlang: Add array and slice type syntax
2024-07-20 18:22:50 -05:00
b3d62c09aa
conlang: Self is not a type, it's a path to a type
2024-07-17 15:05:52 -05:00
1c3a56f5b5
misc: Fix broken doc links, remove "pool" from index_map.rs
2024-05-19 15:32:57 -05:00
0cc0cb5cfb
conlang: Remove "Identifier" node
...
It never carried any extra information, and got in the way everywhere it was used.
2024-05-19 14:41:31 -05:00
f330a7eaa5
conlang: Split assignment into plain Assign and assign-with-Modify
2024-05-19 14:31:30 -05:00
8d8928b8a8
conlang: Struct, tuple member accesses, member function call syntax
...
Currently uses UFCS in the interpreter. This may change after type checking?
2024-05-19 13:55:28 -05:00
3fe5916a4f
cl-ast: Switch from old string interner to new string interner
...
Update cl-parser, et. al. to match.
2024-04-27 20:24:11 -05:00