a339dfd549dummy.cl: Use unicode escape 🦈John2023-10-23 21:02:45 -0500
0e917837c0identify_tokens: Use Display on token DataJohn2023-10-23 21:02:09 -0500
8b1a1534f3docs: Improve and update documentationJohn2023-10-23 21:01:32 -0500
c43ecf00d1token::token_data::Data: Renamed from token::TokenData & Moved into its own module + Added token::preamble; common imports when working with TokenJohn2023-10-23 19:43:16 -0500
ccfddcc09aConlang: Add range operators TODO: Limit range operators to at most 2 operandsJohn2023-10-22 18:30:00 -0500
b5abd2bff1Lexer rewrite: - Scan the input string *linearly*, without backtracking - Peek at most one character (unicode code-point) ahead - Store data (unescaped string literals and chars, identifiers, integers, floats) inside Token - This unfortunately makes tokens non-Copy - Refactor Parser to accommodate these changes - On the bright side, Parser no longer needs a reference to the text! - Write a new set of lexer tests - TODO: write a new set of token tests using tokendataJohn2023-10-22 18:28:20 -0500
feb5cc5dd0AST: Refactor binary operations, fix Walk trait - Unified math operations into a single self-referential enum - Walk now visits the children of a node, rather than the node itself - The old behavior was super confusing, and led to numerous stack overflows.John2023-10-21 12:24:52 -0500
4ec91ff806constr: switch to Rust-style unicode parsingJohn2023-10-21 12:20:22 -0500
1e5f7149d9Token: Add range operators, rename for consistencyJohn2023-10-20 17:09:14 -0500
34525ec77alexer: Only allow lines up to 4GB in size. Saves 8 bytes per tokenJohn2023-10-20 15:34:54 -0500
a26a01fc17constr: Misuse iterators to parse tokensJohn2023-10-20 15:33:02 -0500
7f7393d2c6conlang: Grammatical cleanup; merge control flow expressionsJohn2023-10-19 14:40:03 -0500
331141356atests: Move module into fileJohn2023-10-17 13:39:05 -0500
73f7337fd5pretty_printer: Move module into fileJohn2023-10-17 13:38:30 -0500
59617d805aparser: Move module into fileJohn2023-10-17 13:36:21 -0500
3d0698ba60lexer: Move module into fileJohn2023-10-17 13:33:07 -0500
b1d9e4fd03ast: Move module into fileJohn2023-10-17 13:30:16 -0500
5d9c45c26atoken: Move module into fileJohn2023-10-17 13:23:34 -0500
c15490847atoken & lexer: add line & col to tokensJohn2023-10-13 13:05:14 -0500
545483dae6token: Add Display impl for TypeJohn2023-09-28 01:34:56 -0500
48f5e5248cconlang: Add break, true, false keywords, and example fileJohn2023-09-28 01:31:46 -0500
f25685560aconlang: Tokenize punctuation (resolves#9) Things left to consider: - token::Type enum is getting fairly large. breaking it up could invoke substantial code bloat - Compound operators might make more sense at the parser level - Compound-assign operators are ripe for syntactic desugaring, but there must be some reason it's done separately in other languages. - Operators like FatArrow may still make sense at the tokenizer level, regardless. - What is a lexer? A miserable pile of parsers! - Operator overloading, or user-defined operators? Hmm...John2023-09-28 00:11:31 -0500
d3b1e65e35lexer: Add documentation blurbs to token-class functionsJohn2023-09-28 00:09:47 -0500
b1621f2522tests: Add tests for token-class functionsJohn2023-09-28 00:08:51 -0500
0661789d42Lexer: reduce code duplication in Rule mappingJohn2023-09-27 22:51:51 -0500
d4245844celexer: Add Invalid token to aid in implementing featuresJohn2023-09-27 21:17:35 -0500
335fea8d73conlang: add delimiter types, lexer rules, and testsJohn2023-09-27 18:26:38 -0500
bed21941e8conlang: Add keyword types, rules, and testsJohn2023-09-27 18:21:19 -0500
097e2c4f11conlang: Rename literals; split, compose, and document Rules - Renamed literal Types to reflect their literal nature - This allows for consistent naming across future non-literal Types - Complicated lexer Rules have been split into composable sub-rules, and moved into the Rule struct. - This improves modularity, and allows sharing of sub-rules across rules. - Documented each lexer rule with (at least) a one-line blurb describing its functionJohn2023-09-27 18:13:01 -0500
46e72e4889conlang: add toy program to interact with the tokenizerJohn2023-09-25 18:06:03 -0500
443cd11803lexer: Refactor rule and assoc. tests - Lexer now ignores leading whitespace - Rule now has shorter, clearer function names - Tests for comment lexing are now consolidated into a module - Tests using the assert_has_type_and_len wrapper can now specify an expected lengthJohn2023-09-25 14:13:28 -0500
71053f1992lerox: Consolidate traits The auto-implementation scheme doesn't really fit the applicationJohn2023-09-25 13:52:21 -0500
8bc32896c9lerox: Fix and_any setting the Combinable to alright even when it should not be alrightJohn2023-09-23 01:04:10 -0500
a8f524d742lerox: and_maybe is actually and_either with g = identity functionJohn2023-09-23 00:57:33 -0500
24f7c95ae2dummy.cl: Add the new comment types to the exampleJohn2023-09-22 23:57:30 -0500