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