Max Brunsfeld
94dc703bfc
Require that grammars' start rules be visible
2017-08-04 17:07:37 -07:00
Max Brunsfeld
1dca3a0b58
Simplify parse version reordering
2017-08-04 14:51:14 -07:00
Max Brunsfeld
e5c3bf742d
Update fixture grammars
2017-08-03 16:32:39 -07:00
Max Brunsfeld
84e4114f79
Allow conflicts involving repeat rules to be whitelisted, via their parent rule
2017-08-03 15:18:29 -07:00
Max Brunsfeld
119c67dd78
Fix conflict reporting for shift/reduce conflicts w/ multiple reductions
...
We were failing to rule out shift actions with lower precedence.
Signed-off-by: Philip Turnbull <philipturnbull@github.com>
2017-08-02 15:13:30 -07:00
Max Brunsfeld
09f4796f6b
Get tests passing w/ new alias API
2017-08-01 14:35:34 -07:00
Max Brunsfeld
cb5fe80348
Rename RENAME rule to ALIAS, allow it to create anonymous nodes
2017-07-31 16:41:11 -07:00
Max Brunsfeld
cbdfd89675
Mark reductions as fragile based on their final properties
...
We previously maintained a set of individual productions that were
involved in conflicts, but that was subtly incorrect because
we don't compare productions themselves when comparing parse items;
we only compare the parse items properties that could affect the
final reduce actions.
2017-07-21 09:54:24 -07:00
Max Brunsfeld
7d9d8bce79
Handle inlined rules that contain other inlined rules
2017-07-20 15:29:06 -07:00
Max Brunsfeld
45c40c8742
Update test grammars to use new serialization API
2017-07-17 17:46:46 -07:00
Max Brunsfeld
4b40a1ed6c
Support anonymous tokens inside of RENAME rules
2017-07-14 10:19:58 -07:00
Max Brunsfeld
b3a72954ff
Introduce RENAME rule type
2017-07-13 17:17:22 -07:00
Max Brunsfeld
e4f57d6fee
Test more cases in fixture grammar with inline rules
2017-07-12 10:12:42 -07:00
Max Brunsfeld
65bf1389e1
Add a way to automatically inline rules
2017-07-11 23:13:44 -07:00
Max Brunsfeld
a98abde529
Provide all preceding symbols as context when reporting conflicts
2017-07-07 14:52:56 -07:00
Max Brunsfeld
d8e9d04fe7
Add PREC_DYNAMIC rule for resolving runtime ambiguities
2017-07-06 15:24:45 -07:00
Max Brunsfeld
8f028ebf68
Avoid deep tree comparison when both trees have errors
2017-07-05 17:33:35 -07:00
Max Brunsfeld
009d6d1534
Improve heuristics for pruning parse versions based on errors
...
* Rewrite the error cost comparison in terms of explicit, discrete
conditions.
* Allow merging versions have different error costs.
* Store the depth of each stack version since the last error. Use this
state to prevent incorrect merging.
* Sort the stack versions in order of preference and put a hard limit on
the version count.
2017-06-29 15:00:20 -07:00
Max Brunsfeld
6db12ab44e
Adjust C error recovery tests to reflect grammar changes
2017-06-21 16:58:40 -07:00
Max Brunsfeld
af553420bf
Update JS error corpus
2017-03-19 22:21:12 -07:00
Max Brunsfeld
ed8fbff175
Allow anonymous tokens to be used in grammars' external token lists
2017-03-17 16:31:29 -07:00
Max Brunsfeld
f04d7c5860
Handle unused tokens
2017-03-09 21:16:37 -08:00
Max Brunsfeld
6dc0ff359d
Rename spec -> test
...
'Test' is a lot more straightforward of a name.
2017-03-09 20:40:01 -08:00