83694988c3
cl-ast: Let Ty handle the complexities of VariantKind::Tuple's type list
2024-04-16 20:40:02 -05:00
98868d3960
cl-ast: allow TyRef to be mutable
...
yaml.rs: Print AddrOf and TyRef the same way
2024-04-16 20:35:27 -05:00
75adbd6473
cl-ast: Separate function *signature* from function bindings, for cl-typeck
...
Note: this breaks cl-typeck
2024-04-16 20:31:23 -05:00
d0ed8309f4
cl-ast: Don't store type metadata in TyTuple. Allow arbitrary TyKind in TyFn args.
2024-04-14 23:16:35 -05:00
0fab11c11b
cl-parser: Fix visability qualifier coming before attributes while parsing Item
2024-04-14 23:13:17 -05:00
f958bbcb79
cl-ast: Hash everything
2024-04-14 23:11:48 -05:00
d07a3e1455
cl-ast: Separate Display impl for Ty and TyKind
2024-04-14 23:10:02 -05:00
489a1f7944
cl-structures: Give Pool an iterator over its keys
2024-04-14 23:09:12 -05:00
bc33b60265
cl-parser: Parse Impl/ImplKind
2024-04-14 18:01:58 -05:00
89cd1393ed
cl-ast: Give Impl/ImplKind some love
2024-04-14 18:01:30 -05:00
3bebac6798
cl-parser: cleanup doc comments + add new error type
2024-04-14 17:59:29 -05:00
6ea99fc6f5
cl-ast: Fix formatting for Index expression
2024-04-13 23:26:06 -05:00
6589376870
Update .gitignore
2024-04-13 03:38:32 -05:00
fc3cbbf450
Conlang v0.0.5: Pratternization
...
cl-token:
- Minimize data redundancy by consolidating TokenKind::Literal; TokenData::{String, Identifier}
- Rename Op to Punct
cl-ast:
- Remove ExprKind::{Member, Call} in favor of making them
'binary' operators
- Consolidate boxes (TODO: consolidate more boxes)
- Remove repetition vecs in favor of boxes (this may come with performance tradeoffs!)
cl-lexer:
- Reflect changes from cl-token
cl-interpret, cl-repl/src/examples:
- Reflect changes from cl-ast
cl-parser:
- Switch to Pratt parsing for expressions
- TODO: Code cleanup
- TODO: Use total ordering for Precedence instead of binding powers (that's what the binding powers are there for anyway)
- Switch functional parsers to take Punct instead of TokenKind
- It's not like we need a `for`-separated list
- Remove `binary` macro. No longer needed with precedence climbing.
- Repurpose `operator` macro to produce both the operator and the respective Precedence
- Remove several of the smaller parser functions, since they've been consolidated into the larger `exprkind`
2024-04-13 03:33:26 -05:00
2c36ccc0cf
cl-parser: Misc. cleanup
2024-04-13 03:02:54 -05:00
265db668ed
cl-parser: Reword an error message
2024-04-13 02:57:29 -05:00
fa51f14db5
Remove collect-identifiers example
2024-04-13 02:54:30 -05:00
3b0190b389
cl-interpret: remove Loc from error type
...
This allows removal of intermediate expression metadata from the AST
2024-04-13 02:54:02 -05:00
21c9909f0c
cl-token: make Token fields public
...
No sense in having them private, they're just plain old data.
2024-04-13 02:48:16 -05:00
290ede2fa3
cl-token: Break operators into their own separate enum, to make future pratt parsing easier
2024-04-12 16:20:24 -05:00
2091cce570
cl-token: Rename Type
to TokenKind
, Data
to TokenData
to match the project's general style
2024-04-12 14:36:26 -05:00
902494e95a
cl-token: Merge token_type::Type and token_type::Keyword into a single enum
2024-04-12 14:25:49 -05:00
a213c7f70a
grammar: Minor cleanup, fix compat with Grammatical parser
2024-04-11 19:59:00 -05:00
8dfddb739e
cl-ast: Remove unused monovariant MemberKind enum
2024-04-06 01:03:01 -05:00
a31d285d99
grammar.ebnf: Clean up grammar
...
- TODO: Member access is totally broken lmao
2024-04-06 01:02:31 -05:00
a036ce260d
cl-ast: Add doc comments for every node
...
This improves the rustdoc output somewhat
2024-04-03 13:19:57 -05:00
4a52d2bc6a
conlang: Update type checker
...
- cl-typeck: Add modules, intrinsic types, unify definition ids
- cl-ast: make attribute lists `Default`
- cl-structures: Add functions to iterate through a pool
- cl-repl: Create an example REPL for the type checker
2024-04-01 05:14:06 -05:00
614d20ea2c
cl-parser: parse enums + enum variants
2024-04-01 04:28:30 -05:00
7b40ddc845
cl-ast: destination side of type alias should be an identifier
2024-04-01 04:20:26 -05:00
bdf0bb68ca
cl-ast: improve formatting of enums
2024-04-01 04:18:31 -05:00
8ee318f26b
cl-ast: Move ExprKind::Assign outside the box, to be more consistent with other uses of Expr
2024-03-28 16:34:24 -05:00
ba148ef5de
cl-typeck: Continue work on symbol namespaces
...
- Refactor for cl-structures intern pool
- Create a list of types the compiler is supposed to care about/have implementations for (Intrinsic/primitive types)
- Add modules and projects (the sym equivalent of ast::File)
- Flesh out value definitions
- TODO: Create an IR for statements and expressions, and lower the AST into it
2024-03-27 01:54:19 -05:00
8cbe570811
cl-structures: Sketch out a type-safe generic interning pool
2024-03-27 01:26:27 -05:00
66c29d601c
cl-structures: Tree cleanup
2024-03-27 01:25:19 -05:00
9f9a21b4c3
cl-repl: Add example that prints the AST in a more friendly way than Debug
but in a more verbose way than Display
2024-03-27 01:24:28 -05:00
2cdf112aa6
cl-structures: add todo w/r/t tree traversal api
2024-03-15 05:53:26 -05:00
af35dd1bb3
cl-structures: add a sized, monotype stack
2024-03-15 05:11:47 -05:00
ecde44910f
cl-structures: Add a simple potted tree structure, for future use in the module system
2024-03-15 05:10:34 -05:00
a74cd0b8ac
cl-structures: break span
into its own file.
2024-03-12 19:32:11 -05:00
2eade74d3a
cl-repl: Terminal pipe support + fun stylistic fixups
2024-03-01 05:33:35 -06:00
9cae7e4eb8
cl-lexer: switch to unicode-ident crate, since a dependency of cl-repl depends on it.
2024-03-01 04:11:38 -06:00
a07312bf92
cl-lexer: fix link in doc comment
2024-03-01 03:17:43 -06:00
a9b834e012
conlang: bump version number
2024-03-01 03:16:02 -06:00
57dada7aba
gitea: update feature-proposal.md
2024-03-01 03:13:07 -06:00
ba6285e006
Pretend conlang has a complete compiler, and start mocking up a standard library
2024-03-01 02:50:50 -06:00
c7fdeaf37a
cl-typeck: Begin work on new type-checker.
...
Comments in lib.rs outline my current thought processes
2024-03-01 02:49:22 -06:00
09737aa40b
temp_type_impl: pretty-print functions
2024-03-01 02:47:07 -06:00
1eec1b06ce
cl-ast: Move matched brace indenter out of ast_impl (it doesn't impl the ast)
2024-03-01 02:44:35 -06:00
276f0b1031
"libconlang": Remove libconlang
2024-03-01 02:38:00 -06:00
d7604ba039
cl-repl: restructure for future improvements. Replaces temporary handrolled argument parser with external dependency argh
.
...
TODO: Rewrite `argh` in Conlang :^P
2024-03-01 02:35:58 -06:00