Commit graph

1128 commits

Author SHA1 Message Date
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