Max Brunsfeld
cf19b2e58d
Make repeat rules left-recursive instead of right recursive
2016-04-18 12:40:14 -07:00
Max Brunsfeld
0ea2962fbe
Clean up consume_lookahead function
2016-04-18 11:17:07 -07:00
Max Brunsfeld
73c99e9926
Fix returned stack version when popping halts at an error
2016-04-18 11:17:07 -07:00
Max Brunsfeld
f63fcffe95
Fix incorrect cast in ts_language_symbol_is_in_progress
2016-04-18 11:17:07 -07:00
Max Brunsfeld
655d374d0c
Recompile test languages if parser.h changes
2016-04-18 11:17:06 -07:00
Max Brunsfeld
2f81a6f6c7
Don't recover from errors based on extra tokens
2016-04-15 23:14:31 -07:00
Max Brunsfeld
f62e0a3d49
Ensure reference count of new tree copy is 1
2016-04-15 23:01:36 -07:00
Max Brunsfeld
d55df29e49
Remove unused constant
2016-04-15 21:33:57 -07:00
Max Brunsfeld
316aba76ee
Reorder stack methods
2016-04-15 21:33:31 -07:00
Max Brunsfeld
cad663b144
Consider multiple error repairs on the same path of the stack
...
This changes the API to the stack_iterate function so that you can pop
from the stack without stopping iteration
2016-04-15 21:28:00 -07:00
Max Brunsfeld
3778c63277
Clean up stack pop code
2016-04-11 23:12:50 -07:00
Max Brunsfeld
8bfaa5ffc3
Add directory argument to format script
2016-04-11 23:11:37 -07:00
Max Brunsfeld
9d87bc4517
Rename stack successors to links
2016-04-11 22:41:06 -07:00
Max Brunsfeld
695be5bc79
Merge equivalent stacks in a separate stage of parsing
...
* No more automatic merging every time a state is pushed to the stack
* When popping from the stack, the current version is always preserved
2016-04-10 14:12:24 -07:00
Max Brunsfeld
827573f1c7
Clean up reduce function
2016-04-07 10:40:33 -07:00
Max Brunsfeld
5ba40f15ad
Rename stack heads to versions
2016-04-04 12:25:57 -07:00
Max Brunsfeld
b1a696085a
Clean up stack pop functions
2016-04-04 11:59:10 -07:00
Max Brunsfeld
2f3e92c9be
Add function for popping all nodes from the stack
2016-04-04 11:44:45 -07:00
Max Brunsfeld
267092940d
Collapse redundant interior error nodes
2016-04-03 23:46:43 -07:00
Max Brunsfeld
eb47edb446
Add static function for stringifying nodes including hidden ones
2016-04-03 23:45:43 -07:00
Max Brunsfeld
849ecf0a13
Display pending stack links as dashed lines
2016-04-02 23:02:21 -07:00
Max Brunsfeld
91e3609fbf
Write to file directly from stack debugging function
2016-04-02 22:18:44 -07:00
Max Brunsfeld
d5c4dacb35
Clean up parser.c
2016-04-02 20:58:27 -07:00
Max Brunsfeld
956b3e68d7
Only store one reusable node, not one for each stack version
2016-04-01 21:17:23 -07:00
Max Brunsfeld
6bce6da1e6
Store verifying flag within parse stack
2016-03-31 12:03:21 -07:00
Max Brunsfeld
523923bd93
Ensure reduce only produces one slice when stopping at errors
2016-03-10 21:26:21 -08:00
Max Brunsfeld
be707970da
Fix always_inline attribute usage
2016-03-10 13:10:46 -08:00
Max Brunsfeld
07625808d3
Look for two consecutive valid tokens before resuming parsing after errors
2016-03-10 11:57:33 -08:00
Max Brunsfeld
a948cb3ea0
Allow normal reductions that pop to the initial error state
2016-03-10 11:56:10 -08:00
Max Brunsfeld
e7d3d40a59
Explicitly inform stack pop callback when the stack is exhausted
...
Also, pass non-extra tree count as a single value, rather than keeping
track of the extra count and the total separately.
2016-03-10 11:51:55 -08:00
Max Brunsfeld
288a164823
Retrieve current lookahead state before it can be removed in reduce
2016-03-10 11:44:23 -08:00
Max Brunsfeld
a8774831e8
Fix buffer overflow when limiting stack node's successor count
2016-03-10 11:43:13 -08:00
Max Brunsfeld
da4a3f6516
Don't abort on allocation failures while finishing parse
2016-03-10 11:42:10 -08:00
Max Brunsfeld
9657dfcfc3
Compute in-progress symbols for out-of-context states
2016-03-10 11:39:44 -08:00
Max Brunsfeld
240355b04c
Make test for allocation failure handling fail more gracefully
2016-03-10 11:36:26 -08:00
Max Brunsfeld
4f726da881
Fix logic for whether to regenerate parsers in specs
2016-03-10 11:35:59 -08:00
Max Brunsfeld
2e35587161
Use new stack_pop_until function for repairing errors
2016-03-07 20:06:46 -08:00
Max Brunsfeld
4348eb89d4
Expose lower stack nodes via pop_until() function
...
This callback-based API allows the parser to easily visit each interior node
of the stack when searching for an error repair. It also is a better abstraction
over the stack's DAG implementation than having the public functions for
accessing entries and their successor entries.
2016-03-07 16:09:34 -08:00
Max Brunsfeld
bc8df9f5c5
Avoid recompiling test languages when possible
2016-03-03 12:05:04 -08:00
Max Brunsfeld
c0595c21c5
Halt stack pops at all error states, not just error trees
2016-03-03 11:05:37 -08:00
Max Brunsfeld
5f9be9d9b2
Make Failure enumerators have the value zero
2016-03-03 10:24:12 -08:00
Max Brunsfeld
c1fa1efaad
Give ParseActionResult enumerators more consistent names
2016-03-03 10:21:57 -08:00
Max Brunsfeld
3d516aeeec
Give StackPushResult enumerators shorter names
2016-03-03 10:20:05 -08:00
Max Brunsfeld
8a13b5d120
Rename StackPopResult -> StackSlice
2016-03-03 10:16:10 -08:00
Max Brunsfeld
b99db66ce7
Improve log message for handling errors
2016-03-03 09:37:37 -08:00
Max Brunsfeld
aef7582a2a
Start using the forward move to recover from errors
...
Some unit tests passing. Corpus tests still failing
2016-03-02 21:08:42 -08:00
Max Brunsfeld
b733b0cc81
Remove duplicate parse actions
...
This has only come up for out-of-context states, but it seems possible now that there
could be duplicate actions for any state, because of the possibility of multiple
actions with different precedence or associativity that are otherwise the same
2016-03-02 20:58:40 -08:00
Max Brunsfeld
b68f7212c8
Do not consider any symbols to be 'in-progress' in out-of-context states
2016-03-02 20:58:39 -08:00
Max Brunsfeld
76d072545d
Include out-of-context states starting with non-terminals
2016-03-02 20:58:39 -08:00
Max Brunsfeld
e7abfdd373
Prevent string assertion failures from creating later memory leak errors
2016-03-02 20:58:39 -08:00