Commit graph

1115 commits

Author SHA1 Message Date
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
Max Brunsfeld
e0c24e3be6 Remove old error recovery code 2016-03-02 20:58:39 -08:00
Max Brunsfeld
501e426d29 Add function exposing in-progress symbols for each state 2016-03-02 20:58:08 -08:00
Max Brunsfeld
c8d7c16f87 Use out-of-context states when in error parse state 2016-03-02 20:56:05 -08:00
Max Brunsfeld
9b2e775b79 Store out-of-context states in the language struct 2016-03-02 20:56:05 -08:00
Max Brunsfeld
ffcd8b5c49 Generate C code for the in-progress symbols in each parse state 2016-03-02 20:56:05 -08:00
Max Brunsfeld
00d953f507 Generate C code for out-of-context states 2016-03-02 20:56:05 -08:00
Max Brunsfeld
8c01b70ce7 Don't skip tokens that are not the start of any non-terminal 2016-03-02 20:56:05 -08:00
Max Brunsfeld
b4f2407a49 Add forward move states for each terminal symbol 2016-03-02 20:56:04 -08:00
Max Brunsfeld
dee1f697c1 Compute the set of variables that can begin with each terminal symbol 2016-02-25 21:51:52 -08:00
Max Brunsfeld
5a34d74702 Clean up stack 2016-02-25 21:51:39 -08:00
Max Brunsfeld
1850951b4f Escape special chars in production names for debug graphs 2016-02-24 17:24:11 -08:00
Max Brunsfeld
597e4b221c Merge pull request #30 from tree-sitter/debuggable-stack
Fix bugs in ambiguity management
2016-02-23 17:43:53 -08:00
Max Brunsfeld
da2ef7ad35 Store trees in the links between stack nodes, not in the nodes themselves 2016-02-23 17:35:50 -08:00