c24f323ff0
v1.5.1
2024-07-26 22:30:48 -04:00
fec2c28693
Only calculate lookahead tokens when needed - #28
...
Lookahead tokens are only need if either:
(1) There is more than one rule that could be reduced in a given parser
state, or
(2) There are shift actions for a state and at least one rule that could
be reduced in the same state (to warn about shift/reduce conflicts).
2024-07-26 22:08:25 -04:00
61339aeae9
Avoid recalculating reduce_rules - #28
2024-07-26 21:36:41 -04:00
95b3dc6550
Cache ItemSet#next_symbols - #28
2024-07-25 20:33:15 -04:00
74d94fef72
Do not build ItemSet follow sets - #28
2024-07-25 20:02:00 -04:00
588c5e21c7
Cache ItemSet#leading_item_sets return values - #28
2024-07-25 10:42:43 -04:00
343e8a7f9e
v1.5.0
2024-07-22 21:23:38 -04:00
a7348be95d
Add rule field aliases - #24
2024-07-22 20:16:52 -04:00
9746b3f2bf
Document position tracking fields in user guide - #27
2024-07-21 14:04:51 -04:00
3aced70356
Show line numbers of rules upon conflict - close #23
2024-07-14 20:52:52 -04:00
2dd89445fc
Add command line switch to output warnings to stderr - close #26
2024-07-14 15:36:07 -04:00
4ae5ab79b3
Warn on shift/reduce conflicts
2024-07-13 21:35:53 -04:00
69cc8fa67d
Always compute lookahead tokens for reduce rules
...
Even if they won't be needed for the generated parser, they'll be useful
to detect shift/reduce conflicts.
2024-07-13 21:01:44 -04:00
7f3eb8f315
Calculate follow token set for an ItemSet
2024-07-13 20:48:28 -04:00
d76e12fea1
Rename "following" to "next" - #25
...
The term "following" could potentially imply an association with the
"follow set", however it was used in a non-closed manner.
2024-07-08 10:14:09 -04:00
1468946735
v1.4.0
2024-05-11 11:46:28 -04:00
0d1ee74ca6
Give a better error message when a referenced ptype has not been declared
2024-05-09 17:35:27 -04:00
f3e4941ad8
Allow rule terms to be marked as optional
2024-05-09 11:56:13 -04:00
494afb7307
Allow specifying the start rule name
2024-05-05 12:39:00 -04:00
153f9d28f8
Allow user to specify AST node prefix or suffix
...
Add ast_prefix and ast_suffix grammar statements.
2024-05-04 21:49:13 -04:00
d0f542cbd7
v1.3.0
2024-04-23 00:31:56 -04:00
c7a18ef821
Add AST node field name with no suffix when unique - #22
2024-04-22 21:50:26 -04:00
cb06a56f81
Add AST generation - #22
2024-04-22 20:51:27 -04:00
2b28ef622d
Add specs to fully cover cli.rb
2024-04-06 14:37:15 -04:00
3a8dcac55f
v1.2.0
2024-04-02 21:42:33 -04:00
3eaf0d3d49
allow one line user code blocks - close #21
2024-04-02 17:44:15 -04:00
918dc7b2bb
fix generator hang when state transition cycle is present - close #20
2024-04-02 14:27:08 -04:00
5b2cbe53e6
Add backslash escape codes - close #19
2024-03-29 16:45:54 -04:00
fad7f4fb36
Allow user termination from lexer code blocks - close #15
2024-03-29 13:45:08 -04:00
6c847c05b1
v1.1.0
2024-01-07 17:43:06 -05:00
24af3590d1
Allow user to terminate the parser - close #13
2024-01-03 22:32:10 -05:00
af5edaa762
Bump version to 1.0.0
2023-09-25 20:02:02 -04:00
197f126109
Add Assets module to abstract accessing asset files
2023-09-25 16:16:20 -04:00
562c24ce9e
Remove grammar "class" statement
2023-09-24 13:23:44 -04:00
3c8794058f
Add C backend - close #4
2023-08-24 09:40:01 -04:00
4942c76551
Show rule ID and rule set ID in reduce actions log section
2023-07-14 16:52:00 -04:00
5ce562cbc3
Allow configuring API prefix - close #9
2023-07-13 18:06:24 -04:00
ce22e3465b
Use consistent styling
...
Prefix public symbols with "p_".
User lowercase for all type aliases.
Clean up some comments.
2023-07-12 16:45:59 -04:00
c7bca74d3e
Use symbol_id instead of token_id for shift table entries
2023-07-12 15:51:07 -04:00
7a1b4064c1
Switch to new API - close #8
...
The new API is more C-like and will allow consistency across all future
supported language targets.
2023-07-12 15:46:13 -04:00
950fafc872
Add SymbolID
2023-07-10 22:17:54 -04:00
80ac6c17f0
Replace Token struct with integer type
...
Replace _TOKEN_COUNT with INVALID_TOKEN_ID.
2023-07-09 22:35:02 -04:00
36ad6e0d1b
Build Lexer and Parser tables upon construction
2023-07-08 16:52:58 -04:00
ffd02c16d1
Add StateID; remove TransitionResult
2023-07-08 16:46:38 -04:00
0a7938038b
Make RuleSet#id read-only
2023-07-08 11:17:11 -04:00
c88338698a
Store whether a state accepts, not whether it drops
2023-07-08 08:29:33 -04:00
8a377b4950
Just return integer result code from Lexer.lex_token()
2023-07-08 08:08:36 -04:00
b78827746a
Return a Token object from Lexer.user_code()
2023-03-17 20:24:48 -04:00
ce80e00e60
Remove TOKEN_DECODE_ERROR
2023-03-17 20:01:55 -04:00
01b45df1f9
Remove TOKEN_DROP
2023-03-17 19:58:54 -04:00