b2733aa171
cl-interpret/builtin: Add len
builtin as a quick hack to write more interesting programs.
...
This is temporary, I just want a way to get the length of a thing atm.
2024-07-27 18:43:03 -05:00
3f5c5480ae
cl-interpret: [NOT FINAL] Add unicode-aware O(n) string indexing
2024-07-27 18:04:39 -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
b3d62c09aa
conlang: Self is not a type, it's a path to a type
2024-07-17 15:05:52 -05:00
15c4b89bce
cl-interpret: builtin.rs whitespace changes
2024-07-11 04:43:25 -05:00
aa7612926e
cl-interpret: Add format builtin
...
Might as well add some new features to play around with until I rip 'em all out
2024-07-11 04:42:36 -05:00
a646a9e521
cl-interpret: VERY rudimentary support for Const and Static
2024-07-11 03:07:56 -05:00
d692f6bb80
cl-interpret: Complain, rather than panic, on outlined module
2024-07-11 02:48:35 -05:00
d723f7cece
cl-interpret: String-building addition
...
Note: This drastically increases the number of symbols. Yeowch.
2024-07-09 06:14:44 -05:00
b446677eda
cl-interpret: Enforce wrapping behavior
2024-07-09 06:13:55 -05:00
0beb121f32
cl-interpret: Change print to print without newline, add new println builtin
2024-07-09 06:13:05 -05:00
406bfb8882
cl-interpret: Stop kidding myself, I'll be replacing the interpreter before I get rid of this.
2024-05-19 15:16:22 -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
40ec9b30e4
conlang: Use interned strings (Sym
) for all symbols
2024-04-24 19:34:29 -05:00
f483d690e2
Revert "Cargo.toml: Add documentation
key"
...
This reverts commit 087969e117
.
2024-04-22 00:07:44 -05:00
087969e117
Cargo.toml: Add documentation
key
2024-04-21 23:49:24 -05:00
5341631781
conlang: Add constructor expression for structs!
...
grammar:
- Add new rules `PathLike`, `Structor`, `Fielder`
- Replace Path with PathLike in Primary expressions
cl-ast:
- Add nodes for Structor and Fielder
cl-parser:
- Add branch to path-expression parsing
- Parse Structor bodies
interpret:
- Add TODO
2024-04-20 15:02:16 -05:00
efd442bbfa
conlang: Import items into scope with use
!
...
grammar:
- Improve specification of `Path`
- Add `Use` and `UseTree` rules
- Add `Use` as a variant of ItemKind
cl-token:
- Add new keywords `use` and `as`
cl-ast:
- Add nodes for Use and UseTree
- Add new ItemKind for Use
- Implement traversal in Visit and Fold
cl-interpret:
- Mark ItemKind::Use with a todo
cl-parser:
- Update to match grammar
cl-typeck:
- Update to match changes in AST
- Mark UseTrees as NameCollectable and TypeResolvable, but leave as todos
2024-04-20 14:51:54 -05:00
9dc0cc7841
cl-interpret: Give the interpreter a little love
...
And stop copying strings around.
2024-04-19 10:49:25 -05:00
90a3818ca0
conlang: Move all cl-libs into the compiler directory
2024-04-19 07:39:23 -05:00