e07f2be3fa
Something wrong with this, need to understand more
2024-08-28 08:29:09 -07:00
02c1aa507e
Muck around with usability
2024-08-28 08:27:46 -07:00
cd62b65789
Remove the old hand-lexer
...
The machine lexer is working now
2024-08-27 16:49:03 -07:00
d62076f3c4
Fix a bug in terminal declaration
...
whoops. now it parses correctly
2024-08-27 16:47:58 -07:00
49ad7fdb52
Associate metadata with terminals
...
This is a half-assed attempt at doing syntax coloring which I think
will almost certainly turn out to be insufficient. I'm committing it
just to record some of the work I've done but. BUT.
Probably trying to match tree-sitter is a better way of doing
this. (But, like, emitting tree-sitter grammars? Really? Wow, dude.
Way to give up.)
2024-08-27 15:43:07 -07:00
7a5f17f74b
Specify and honor trivia tokens
...
e.g. "this is how machine-generated parsers know to skip blanks and
comments"
The run time implementation could be better; we don't really want to
just discard trivia because it's useful for e.g. doc comments and the
like. BUT for now this is fine.
2024-08-24 10:01:40 -07:00
8e22c59aa8
This is a nicer number format (e.g. 1e3)
2024-08-24 10:01:05 -07:00
30f7798719
Actual strings and floats
...
Using the new regex features
2024-08-24 08:36:28 -07:00
72052645d6
Generated lexers actually kinda work
...
But regular expressions are underpowered and verbose
2024-08-23 15:32:35 -07:00
58c3004702
Move terminals into grammar definition
...
Starting to work on machine-generated lexers too
2024-08-23 07:24:30 -07:00
e04aa1966e
Start moving the examples into tests
2024-06-15 07:52:16 -07:00
a439e1456a
Random tweaks
2024-06-08 17:31:33 -07:00
bd70315935
Improve performance by not de-duping before closing
...
You close *after* you've determined that a successor is new, not
before.
2024-06-06 05:31:15 -07:00
cabc091ee4
Start extracting better expressions
2024-06-02 08:10:18 -07:00
f1507a36f1
Oh, that was a BUG in the grammar!
2024-06-01 05:59:58 -07:00
03937e62e6
Allow the generator to be a little more declarative
2024-06-01 05:57:16 -07:00
e203e27407
Allow the grammar to specify a preference for a generator
...
Overridable, like start production
2024-06-01 05:42:40 -07:00
55c4675fe5
Use precedence and not a lot of different rules
2024-05-31 08:32:05 -07:00
a7b4a3ce8b
Grammars have implicit start symbols
2024-05-31 06:29:57 -07:00
57de8a5b85
More grammar shaping
2024-05-31 05:22:00 -07:00
561dcd87ff
Allow nonterminals to be renamed
2024-05-30 19:15:20 -07:00
dfef449c33
Better tree output
2024-05-30 08:24:36 -07:00
56d24c5fb9
Chaos: split tables, interactions, Terminal
...
- Tables are split into `actions` and `goto` now to make formatting
nicer
- Token is renamed Terminal
- Likes are now Florps
- Lexer now loaded dynamically (badly)
2024-05-30 08:02:47 -07:00
71078f76b4
Interactive grammar editing
2024-05-29 19:28:42 -07:00
45a9303a27
Transparent rules
...
Better parsing/action types
Good grief
2024-05-29 09:07:19 -07:00
0fc04cf11e
Fix grammar bugs, work on debugging harness.
2024-05-27 19:02:10 -07:00
7c1d9b5f2b
A cleaner API
...
I've been hacking on this in a different repository, so I thought I'd
bring it over here.
2024-05-05 08:45:45 -07:00
f656dbd8f3
faster: Significant performance boost on large grammar
...
15s to 5s
2024-04-17 23:25:15 -07:00
6fa89a9757
faster: Finish the big grammar
2024-04-17 17:23:14 -07:00
de0a76818e
faster: Correct precedence but don't use it
...
Precedence now works for, like, resolving expressions in a single
big table but uh... it takes the time from 700ms to like 7s so I've
reverted it for now.
2024-04-17 17:13:18 -07:00
7147557e2b
faster: Snapshot a big grammar I'm playing with
2024-04-17 11:07:56 -07:00