Commit Graph

53 Commits

Author SHA1 Message Date
cmounce 4a065db1e6 Track icase with booleans, not separate enum vals 2025-06-01 10:16:25 -07:00
cmounce ad6d8e182b Add case-insensitive matching 2025-05-30 00:41:05 -07:00
cmounce df99d78a64 Add special matchers, lookahead operators 2025-05-28 01:11:41 -07:00
cmounce ee5451e2b5 Add support for compound groups to grammar! macro 2025-05-27 01:30:34 -07:00
cmounce 02a3e9b267 Add grammar! matching on character ranges 2025-05-26 23:43:29 -07:00
cmounce 0994054291 Clean up old code, add option/star/plus ops 2025-05-26 20:56:14 -07:00
cmounce ff9d471e00 Clean up grammar! code generation 2025-05-26 02:00:46 -07:00
cmounce 2a935840fd Add grammar! support for choice operator 2025-05-26 00:42:11 -07:00
cmounce 1e90a68ee8 Generate actual parsing code in grammar! macro 2025-05-26 00:18:15 -07:00
cmounce 63dc9790ed Refactor Term to allow sequences 2025-05-25 21:17:34 -07:00
cmounce 2305e6453f Hacking on grammar! proc macro
- Generated functions take parser state as input
- Start of code generation
- WIP modeling of sequences
2025-05-25 19:52:16 -07:00
cmounce 6933ae47b4 Add basic rule definitions to grammar proc macro 2025-05-25 03:18:56 -07:00
cmounce 1d8c939400 Try generating named functions via proc macros 2025-05-25 02:20:03 -07:00
cmounce 59392ccad2 Playing with proc macros 2025-05-23 23:21:51 -07:00
cmounce 856f817dbe Add parsing for label refs, shorthand sends 2025-05-23 21:46:55 -07:00
cmounce 773ee19158 WIP Progress on parsing labels
- Add parsing for motion at start of line
- Start parsing if statements
- Add first file-based parsing test
- Implement Rule for `Box<dyn Rule>`
2025-05-19 01:25:29 -07:00
cmounce cd8cc1dd57 Add parsing for conditions, directions, tile kinds 2025-05-12 00:02:20 -07:00
cmounce d895bd27ab WIP parsing sends 2025-05-11 18:37:02 -07:00
cmounce b21fe8b5e3 Tighten label name parsing
This includes some custom syntax I'm pretty sure about, such as
namespaces and local labels.
2025-05-11 02:19:28 -07:00
cmounce 0c5bacc341 Add combinator NoCase 2025-05-11 01:47:04 -07:00
cmounce b685e4e657 Add combinator Plus 2025-05-11 01:14:52 -07:00
cmounce dec8213638 Implement nested capture groups, iterators 2025-05-10 20:08:22 -07:00
cmounce c027089936 Clean up PEG parser code
- Reorder Parser-centric structs
- Rename fields for consistency
- Make RawCapture private
2025-05-10 20:04:28 -07:00
cmounce dbe4e8963e Proof of concept parsing: print all labels 2025-05-10 17:43:17 -07:00
cmounce 6d33bd5838 Add a very basic capture group iterator
- Add a basic iterator over Event
- Use single struct per capture group to store capture info
2025-05-10 17:43:17 -07:00
cmounce 4be8add5c0 Add basic capture groups 2025-05-09 23:55:38 -07:00
cmounce 661a9aa286 Revise trait Rule to return bool 2025-05-09 23:21:32 -07:00
cmounce f3ab9679cc Refactor parser tests to be more consistent 2025-05-09 23:13:02 -07:00
cmounce b52da476f0 Flesh out grammar for parsing labels 2025-05-09 22:46:38 -07:00
cmounce 5d59f5b31f Add some more PEG parser features
- Add combinators: Dot, Opt
- Add lookahead combinators: And, Not
- Make more things `pub`
2025-05-09 21:56:26 -07:00
cmounce 0043078045 Add character ranges to PEG parser 2025-05-08 00:19:31 -07:00
cmounce e2eebc62ba Tear out old parser 2025-05-06 08:30:51 -07:00
cmounce 5be13dca3e Add star, EOF combinators 2025-05-06 08:23:00 -07:00
cmounce 228188ffd0 Move string encoding/decoding into world parser 2025-05-04 14:45:34 -07:00
cmounce e5d47a0f3c Fix bug when parsing off-board stats 2025-05-04 13:23:36 -07:00
cmounce 71aa44f707 Start an alternative combinator-based parser 2025-05-04 01:42:29 -07:00
cmounce b03cccb8dd Partial work toward a PEG parser library 2025-05-01 01:33:04 -07:00
cmounce 58293ed625 Bump edition to 2024, cargo fmt 2025-04-07 11:09:45 -07:00
cmounce 622b7d0b3a Update packages 2025-04-07 11:08:19 -07:00
cmounce f84caf0dd3 Install Pest 2024-12-31 15:41:43 -08:00
cmounce 1a33c2320e Add provisional binary target to Cargo.toml 2024-06-19 13:44:02 -07:00
cmounce c1af3290d5 Implement a working %include macro 2024-06-08 19:50:57 -07:00
cmounce 0ac9ee4a3f Add macro evaluator with %include implementation 2024-06-03 10:41:11 -07:00
cmounce 4730f11f31 Implement a basic parser, with snapshot testing 2024-06-01 11:01:01 -07:00
cmounce fe21c1a792 Finish up scanner, add string-base error reporting 2024-05-05 20:46:19 -07:00
cmounce 669bcbfcb7 Start work on lexer for macro language 2024-04-29 00:22:18 -07:00
cmounce 4363fd04ac Parse world header into individual fields 2024-04-07 20:54:29 -07:00
cmounce 9e2eb5a07b Move parsing code to new file, convert more to nom
This commit also implements a custom error type to capture why a
World/Board failed to load -- which I might end up tearing out.
2024-03-16 22:54:50 -07:00
cmounce 7c31089eda Extend serialization support to worlds 2024-03-10 21:09:48 -07:00
cmounce 2c9bb315ed Add serialization support for boards 2024-03-10 20:21:16 -07:00