Commit Graph

  • 3bebac6798 cl-parser: cleanup doc comments + add new error type John 2024-04-14 17:59:29 -05:00
  • 6ea99fc6f5 cl-ast: Fix formatting for Index expression John 2024-04-13 23:26:06 -05:00
  • 6589376870 Update .gitignore John 2024-04-13 03:38:32 -05:00
  • fc3cbbf450 Conlang v0.0.5: Pratternization v0.0.5 John 2024-04-13 03:33:26 -05:00
  • 2c36ccc0cf cl-parser: Misc. cleanup John 2024-04-13 03:02:54 -05:00
  • 265db668ed cl-parser: Reword an error message John 2024-04-13 02:57:29 -05:00
  • fa51f14db5 Remove collect-identifiers example John 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 John 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. John 2024-04-13 02:48:16 -05:00
  • 290ede2fa3 cl-token: Break operators into their own separate enum, to make future pratt parsing easier John 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 John 2024-04-12 14:36:26 -05:00
  • 902494e95a cl-token: Merge token_type::Type and token_type::Keyword into a single enum John 2024-04-12 14:25:49 -05:00
  • a213c7f70a grammar: Minor cleanup, fix compat with Grammatical parser John 2024-04-11 19:59:00 -05:00
  • 8dfddb739e cl-ast: Remove unused monovariant MemberKind enum John 2024-04-06 01:03:01 -05:00
  • a31d285d99 grammar.ebnf: Clean up grammar - TODO: Member access is totally broken lmao John 2024-04-06 01:02:31 -05:00
  • a036ce260d cl-ast: Add doc comments for every node This improves the rustdoc output somewhat John 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 John 2024-04-01 05:14:06 -05:00
  • 614d20ea2c cl-parser: parse enums + enum variants John 2024-04-01 04:28:30 -05:00
  • 7b40ddc845 cl-ast: destination side of type alias should be an identifier John 2024-04-01 04:20:26 -05:00
  • bdf0bb68ca cl-ast: improve formatting of enums John 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 John 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 John 2024-03-27 01:54:19 -05:00
  • 8cbe570811 cl-structures: Sketch out a type-safe generic interning pool John 2024-03-27 01:26:27 -05:00
  • 66c29d601c cl-structures: Tree cleanup John 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 John 2024-03-27 01:24:28 -05:00
  • 2cdf112aa6 cl-structures: add todo w/r/t tree traversal api John 2024-03-15 05:53:26 -05:00
  • af35dd1bb3 cl-structures: add a sized, monotype stack John 2024-03-15 05:11:47 -05:00
  • ecde44910f cl-structures: Add a simple potted tree structure, for future use in the module system John 2024-03-15 05:10:34 -05:00
  • a74cd0b8ac cl-structures: break span into its own file. John 2024-03-12 19:32:11 -05:00
  • 2eade74d3a cl-repl: Terminal pipe support + fun stylistic fixups John 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. John 2024-03-01 04:11:38 -06:00
  • a07312bf92 cl-lexer: fix link in doc comment John 2024-03-01 03:17:43 -06:00
  • a9b834e012 conlang: bump version number v0.0.4 John 2024-03-01 03:16:02 -06:00
  • 57dada7aba gitea: update feature-proposal.md John 2024-03-01 03:13:07 -06:00
  • ba6285e006 Pretend conlang has a complete compiler, and start mocking up a standard library John 2024-03-01 02:50:50 -06:00
  • c7fdeaf37a cl-typeck: Begin work on new type-checker. John 2024-03-01 02:49:22 -06:00
  • 09737aa40b temp_type_impl: pretty-print functions John 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) John 2024-03-01 02:44:35 -06:00
  • 276f0b1031 "libconlang": Remove libconlang John 2024-03-01 02:38:00 -06:00
  • d7604ba039 cl-repl: restructure for future improvements. Replaces temporary handrolled argument parser with external dependency argh. John 2024-03-01 02:35:58 -06:00
  • c71f68eb55 "libconlang": remove empty module tree tests John 2024-02-29 21:05:39 -06:00
  • c665e52782 all: #![warn(clippy::all)] John 2024-02-29 21:04:45 -06:00
  • 50b473cd55 cl-lexer: Move lexer into its own crate John 2024-02-29 20:58:50 -06:00
  • abf00f383c cl-parser: Move inline modules out of line John 2024-02-29 20:44:49 -06:00
  • ab17ebbadc cl-parser: break parser into inline module John 2024-02-29 20:43:40 -06:00
  • cc281fc6ab cl-parser: Move parser into its own crate John 2024-02-29 20:41:07 -06:00
  • 1afde9ce35 cl-ast: Move AST definition into its own crate John 2024-02-29 19:49:50 -06:00
  • 6e1d5af134 cl-token: Move token definition into its own crate John 2024-02-29 19:36:06 -06:00
  • ee27095fb3 parser: expand the possibilities for assignment locations John 2024-02-29 19:33:28 -06:00
  • 69f5035a8b span: Break out into its own crate, to make room for future expansion John 2024-02-29 18:31:41 -06:00
  • 362817e512 cl-repl: fix doctest in repline::ignore John 2024-02-29 17:52:16 -06:00
  • 421aab3aa2 interpreter: Break out into a separate crate John 2024-02-29 17:51:38 -06:00
  • 5eb6411d53 interpreter: BuiltIn overhaul! - Allowed builtins to self-describe - Broke builtins into their own module - Created a macro to work with BuiltIns easier - Uses macro 2.0 syntax, so it requires passing in ALL externally referenced identifiers - Luckily, this is already a requirement of good, readable macro definitions! - As a temporary hack, turn overloadable operators into function calls - This is kind of pointless at the moment, since there can only be one definition of a function per name (no ADL/function overloading/traits/type namespaces yet!) - This is also pretty slow, but benchmarking shows it's not as slow as I thought (~400x slower in release mode than a native Rust implementation when running fib.cl/fib.rs. Totally unacceptable for most work, but this is a tree walk interpreter.) - TODO: Remove this when desugaring from operators to function calls is implemented John 2024-02-29 16:48:09 -06:00
  • e9dc8a7e32 cl-repl: hack together some temporary file loading, to aid in standard library development v0.3.0 v0.0.3 John 2024-02-28 06:02:00 -06:00
  • 862d81a9d4 cl-repl: Rename from cl-frontend. Also disable escape code printing when debug assertions are off John 2024-02-28 05:32:10 -06:00
  • 048e41836a cl-frontend: Create a repline demo that collects definitions and usages of identifiers John 2024-02-28 05:25:55 -06:00
  • 78b8d87408 cl-frontend: Embrace the crossterm jank John 2024-02-28 05:11:06 -06:00
  • e01c71f9a7 lexer: implement std::error:;Error for Error (whoops!) John 2024-02-28 05:00:39 -06:00
  • 3785045989 cl-frontend: fix strange newline behavior in REPL John 2024-02-28 01:21:50 -06:00
  • 67bb3d4ae3 parser: Note intent to switch to a Pratt parser John 2024-02-27 23:35:41 -06:00
  • ca51a35f5c ast: Reduce the number of chained references to 65535 John 2024-02-27 23:33:20 -06:00
  • 04320de9a8 parser: Make delim, sep, and rep const John 2024-02-27 23:32:32 -06:00
  • 325498ac8b ast: Add metadata attributes on Items TODO: decide what other places attributes belong John 2024-02-27 23:31:49 -06:00
  • 9806e95247 ast_impl: Forgot to impl From<Expr> for StmtKind (whoops!) John 2024-02-27 22:49:14 -06:00
  • 5484d96e7d ast: Add the "Self" type in preparation for cl-typeck John 2024-02-27 22:48:24 -06:00
  • e3f08ac013 parser: Overhaul the semi-functional Parser::{delimited, separated, repeated} methods into real higher-order functions John 2024-02-27 22:46:36 -06:00
  • 978f5e40c1 conlang: Introduce type-alias/typedef syntax type T; | type T = U; John 2024-02-27 20:49:02 -06:00
  • 0c1b3bfe39 ast: Do not promise PartialOrd/Ord (breaking change) John 2024-02-27 20:41:15 -06:00
  • 87c8d43d11 grammar.ebnf: Fix ModuleKind grammar John 2024-02-26 16:19:21 -06:00
  • c36eec216a parser: Allow StmtKind to parse itself (whoops!) John 2024-02-26 16:03:18 -06:00
  • 66deb41301 grammar.ebnf: Sync changes with AST John 2024-02-26 16:02:36 -06:00
  • 9bde97942c ast: Enum variants can have no data, or have an associated integer. John 2024-02-26 15:59:15 -06:00
  • bb3eecd190 interpreter: Allow statements to choose their own return value (reduces code duplication) John 2024-02-26 15:53:45 -06:00
  • ffa313eea8 ast: Allow type specifier in let statement John 2024-02-26 15:49:55 -06:00
  • 490d320633 parser: allow end of input in binary and indexing operations. This improves robustness and correctness of implementation. John 2024-02-26 15:37:07 -06:00
  • 13995259aa parser: use different wording when the expected value was an operator vs an expression John 2024-02-26 15:35:07 -06:00
  • ae76df9c83 interpreter: Fix bug where a break instruction would instead signal a return from subroutine John 2024-02-26 15:33:47 -06:00
  • 1bfeeb1755 interpreter: shrink integers to pointer-size in temp type implementation, for speed John 2024-02-26 15:32:49 -06:00
  • 59b73f314a ast: Remove unary hash operator to reserve the symbol for use in attribute parsing John 2024-02-26 15:30:50 -06:00
  • cdf283064e ast: Improve ExprKind descriptions John 2024-02-26 15:25:49 -06:00
  • 2095bfec80 Lexer tests: import formatting John 2024-02-26 15:21:14 -06:00
  • 3f8c2b6267 ast: remove done TODOs John 2024-02-26 15:20:33 -06:00
  • 77db95791a cl-frontend: Improve the line-editing capabilities in REPL mode. - Note: This adds a dependency on Crossterm, to set the terminal into raw mode. This could be eliminated by linking the libraries Crossterm uses directly... Or I could embrace Crossterm, and use it for all escape sequences in the terminal, instead of assuming DEC VT500 compatibility. John 2024-02-26 15:15:34 -06:00
  • 5e4e70a72e fibonacci.cl: Move the input number out of the string John 2024-02-26 15:11:28 -06:00
  • b8d70d3393 Cleanup: Break Loc out into a common module, rename WhileParsing => Parsing John 2024-01-23 01:51:00 -06:00
  • c4a32895df conlang 0.3.0: Total grammar overhaul - Rewrote the grammar - Rewrote the AST - Rewrote the Parser - Removed pretty printer (now handled by ast::ast_impl::Pretty, a Writer wrapper) - Added items, and new keywords to go with them - Syntax is ~maybe temporary, based on Rust syntax John 2024-01-21 05:32:18 -06:00
  • 5e2f365f45 conlang: deprecate the AST John 2024-01-21 01:34:40 -06:00
  • 6bb2f3774f interpreter: Add regression tests for operators and precedence John 2024-01-09 23:52:48 -06:00
  • d9d8c70556 interpreter: revert storing environments in functions This change broke recursion entirely John 2024-01-09 22:42:15 -06:00
  • 99ade72756 interpreter: fix variable resolution and assignment John 2024-01-09 22:39:58 -06:00
  • 56f0550829 resolver: remove unused, deprecated stack functions John 2024-01-09 21:04:28 -06:00
  • 15d7565703 token: Add new keywords in preparation for grammar update John 2024-01-06 14:32:56 -06:00
  • 77f7623041 resolver: Improve block scoping with a scope guard John 2024-01-06 14:32:06 -06:00
  • 53f9ec2356 interpreter: use an explicit stack, rather than a cons list Also gets rid of some dead code John 2024-01-05 22:47:16 -06:00
  • 54bae6a9c5 cl-frontend: update doc comment for new behavior John 2024-01-05 21:49:05 -06:00
  • 8d03b8a8eb ast: update todo John 2024-01-05 21:47:36 -06:00
  • d387e4dfd7 interpreter: rewrite interpreter - Remove interpreter struct - Replace with Interpret trait - This separates concerns dramatically! Yay! - Implement block scoping via Frame abstraction - TODO: is this the right abstraction? - TODO: Modules?? - TODO: What environment should be passed into a function call? ast: - rename Name.name to Name.symbol (name.name.name.name.name.name.name is very readable, yes yes) John 2024-01-05 17:48:19 -06:00
  • 9eafae0757 resolver: Whoops! Commit early WIP resolver. John 2024-01-05 17:44:09 -06:00
  • 79fda16788 cl 0.0.2: MAJOR ERGONOMIC BOOST John 2024-01-04 02:18:09 -06:00
  • 9b7cf9c017 lexer: Add :: and #! tokens John 2023-10-30 19:17:03 -05:00