Commit Graph

  • 9ab9583a5b parser: Reorder functions, add doc comments John 2023-10-26 14:41:59 -0500
  • 0445598ae8 grammar: Remove Ignore expression to avoid parsing ambiguity :'( John 2023-10-26 14:36:55 -0500
  • b1f90ca4e9 conlang: Add statements TODO: Parse let statements John 2023-10-26 14:33:56 -0500
  • d1b5c48aac constr/lerox: remove John 2023-10-26 12:23:26 -0500
  • 5c4c8bcb80 lexer: Consume invalid characters John 2023-10-25 19:28:54 -0500
  • 32bde2f749 Minor documentation fixes John 2023-10-23 23:43:11 -0500
  • 0e1beca43d Cargos.toml: wrong key ("publish") John 2023-10-23 23:42:39 -0500
  • 9196d3b1da Add package metadata John 2023-10-23 21:38:06 -0500
  • 1b14a43129 Add LICENSE John 2023-10-23 21:05:51 -0500
  • a339dfd549 dummy.cl: Use unicode escape 🦈 John 2023-10-23 21:02:45 -0500
  • 0e917837c0 identify_tokens: Use Display on token Data John 2023-10-23 21:02:09 -0500
  • 8b1a1534f3 docs: Improve and update documentation John 2023-10-23 21:01:32 -0500
  • c43ecf00d1 token::token_data::Data: Renamed from token::TokenData & Moved into its own module + Added token::preamble; common imports when working with Token John 2023-10-23 19:43:16 -0500
  • 2d1b6d82db Update readme John 2023-10-22 18:41:10 -0500
  • ccfddcc09a Conlang: Add range operators TODO: Limit range operators to at most 2 operands John 2023-10-22 18:30:00 -0500
  • b5abd2bff1 Lexer 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 tokendata John 2023-10-22 18:28:20 -0500
  • feb5cc5dd0 AST: 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. John 2023-10-21 12:24:52 -0500
  • 4ec91ff806 constr: switch to Rust-style unicode parsing John 2023-10-21 12:20:22 -0500
  • 1e5f7149d9 Token: Add range operators, rename for consistency John 2023-10-20 17:09:14 -0500
  • 34525ec77a lexer: Only allow lines up to 4GB in size. Saves 8 bytes per token John 2023-10-20 15:34:54 -0500
  • a26a01fc17 constr: Misuse iterators to parse tokens John 2023-10-20 15:33:02 -0500
  • 7f7393d2c6 conlang: Grammatical cleanup; merge control flow expressions John 2023-10-19 14:40:03 -0500
  • 331141356a tests: Move module into file John 2023-10-17 13:39:05 -0500
  • 73f7337fd5 pretty_printer: Move module into file John 2023-10-17 13:38:30 -0500
  • 59617d805a parser: Move module into file John 2023-10-17 13:36:21 -0500
  • 3d0698ba60 lexer: Move module into file John 2023-10-17 13:33:07 -0500
  • b1d9e4fd03 ast: Move module into file John 2023-10-17 13:30:16 -0500
  • 5d9c45c26a token: Move module into file John 2023-10-17 13:23:34 -0500
  • 71f43d852a readme.md: Clarify goals John 2023-10-16 23:01:09 -0500
  • d6a80e4961 dummy.cl: Update to include while expressions John 2023-10-16 22:55:07 -0500
  • b707bcef81 examples: Add parse_input REPL for fun! John 2023-10-16 22:51:59 -0500
  • 8d1107cb57 Conlang: Add a pretty printer for the AST John 2023-10-16 22:51:07 -0500
  • b89ed307a2 parser: Add recursive descent parser for AST. TODO: Error recovery and synchronization. John 2023-10-16 22:50:15 -0500
  • 0a99a37bd8 ast: Disallow unused imports John 2023-10-16 22:47:16 -0500
  • c7d1aa4d2c lexer: Make the Lexer IntoIter'able John 2023-10-16 22:46:38 -0500
  • 2ce89eec82 lexer: unmatched delimiters? in my commits? Shame! Shame for a thousand years! John 2023-10-16 22:42:32 -0500
  • 4870ff17ba Token: whoops, these fields need to be public (for now) John 2023-10-16 22:37:04 -0500
  • 3866a2e9f2 libconlang: Define the AST (TODO: clean up the AST) John 2023-10-16 22:36:26 -0500
  • cdb8c28e64 grammar.ebnf: Initial prototype grammar John 2023-10-16 22:33:38 -0500
  • e4c827e429 Update .gitignore John 2023-10-16 22:32:22 -0500
  • 8eb1f46a65 Update readme.md John 2023-10-16 22:32:06 -0500
  • 1f0725d2c8 examples/identify_tokens.rs: Overhaul user experience John 2023-10-16 22:26:32 -0500
  • 50bb03ae18 token/lexer: Keywords are identifiers. Add missing operators. Fix <<=/>>=. John 2023-10-16 22:25:48 -0500
  • 9c993b31a1 token: Rename literal tokens & assoc. functions John 2023-10-16 22:14:08 -0500
  • c15490847a token & lexer: add line & col to tokens John 2023-10-13 13:05:14 -0500
  • 545483dae6 token: Add Display impl for Type John 2023-09-28 01:34:56 -0500
  • 48f5e5248c conlang: Add break, true, false keywords, and example file John 2023-09-28 01:31:46 -0500
  • f25685560a conlang: 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... John 2023-09-28 00:11:31 -0500
  • d3b1e65e35 lexer: Add documentation blurbs to token-class functions John 2023-09-28 00:09:47 -0500
  • b1621f2522 tests: Add tests for token-class functions John 2023-09-28 00:08:51 -0500
  • 0661789d42 Lexer: reduce code duplication in Rule mapping John 2023-09-27 22:51:51 -0500
  • d4245844ce lexer: Add Invalid token to aid in implementing features John 2023-09-27 21:17:35 -0500
  • 335fea8d73 conlang: add delimiter types, lexer rules, and tests John 2023-09-27 18:26:38 -0500
  • bed21941e8 conlang: Add keyword types, rules, and tests John 2023-09-27 18:21:19 -0500
  • 097e2c4f11 conlang: 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 function John 2023-09-27 18:13:01 -0500
  • 46e72e4889 conlang: add toy program to interact with the tokenizer John 2023-09-25 18:06:03 -0500
  • 09f22d6bf3 lexer: Tokenize float literals (resolves #4) John 2023-09-25 16:51:18 -0500
  • 8ddf73dc76 lexer: refactor string escape to separate rule (fixes '\\"') John 2023-09-25 16:49:18 -0500
  • fe2b9880d6 lexer: Fix infinite loop while trimming whitespace John 2023-09-25 16:46:06 -0500
  • 247bb1f8f8 integer: Match based on base, if present John 2023-09-25 16:43:50 -0500
  • 03660fd641 tests: fix whitespace John 2023-09-25 14:31:57 -0500
  • e49a3e9fec lexer: Tokenize string literals (resolves #5) John 2023-09-25 14:26:56 -0500
  • 6f6d8ec916 lexer: Tokenize integer literals (resolves #3) John 2023-09-25 14:25:00 -0500
  • 8f07b29ff3 lexer: Tokenize identifiers (resolves #2.) John 2023-09-25 14:22:27 -0500
  • 443cd11803 lexer: 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 length John 2023-09-25 14:13:28 -0500
  • 71053f1992 lerox: Consolidate traits The auto-implementation scheme doesn't really fit the application John 2023-09-25 13:52:21 -0500
  • 8bc32896c9 lerox: Fix and_any setting the Combinable to alright even when it should not be alright John 2023-09-23 01:04:10 -0500
  • a8f524d742 lerox: and_maybe is actually and_either with g = identity function John 2023-09-23 00:57:33 -0500
  • 24f7c95ae2 dummy.cl: Add the new comment types to the example John 2023-09-22 23:57:30 -0500
  • 06597fa1e9 libconlang: implement comment tokenization (for #1) John 2023-09-22 23:56:10 -0500
  • 1d6a315b05 .rustfmt.toml: Configure rustfmt to be slightly more pretty John 2023-09-22 23:55:19 -0500
  • 90ef1f542d lerox: Add lerox, a silly little combinator library John 2023-09-22 23:54:09 -0500
  • 56b17dea3b readme.md: Create readme.md John 2023-09-22 23:51:57 -0500
  • a0132518cf Add feature-proposal template John 2023-09-21 17:46:00 -0500
  • 8f66a64924 Initial Commit John 2023-09-21 15:41:12 -0500