Commit Graph

190 Commits

Author SHA1 Message Date
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
c71f68eb55 "libconlang": remove empty module tree tests 2024-02-29 21:05:39 -06:00
c665e52782 all: #![warn(clippy::all)] 2024-02-29 21:04:45 -06:00
50b473cd55 cl-lexer: Move lexer into its own crate 2024-02-29 20:58:50 -06:00
abf00f383c cl-parser: Move inline modules out of line 2024-02-29 20:44:49 -06:00
ab17ebbadc cl-parser: break parser into inline module 2024-02-29 20:43:40 -06:00
cc281fc6ab cl-parser: Move parser into its own crate 2024-02-29 20:41:07 -06:00
1afde9ce35 cl-ast: Move AST definition into its own crate 2024-02-29 19:49:50 -06:00
6e1d5af134 cl-token: Move token definition into its own crate 2024-02-29 19:36:06 -06:00
ee27095fb3 parser: expand the possibilities for assignment locations
This may be reverted later.
TODO: Formalize the concept of a place expression
TODO: Add this to grammar.ebnf
2024-02-29 19:33:28 -06:00
69f5035a8b span: Break out into its own crate, to make room for future expansion 2024-02-29 18:31:41 -06:00
362817e512 cl-repl: fix doctest in repline::ignore 2024-02-29 17:52:16 -06:00