Max Brunsfeld
4e6e996a76
Simplify skipping of reduced subtrees after errors
2016-08-15 17:37:00 -07:00
Max Brunsfeld
c067b30ce8
Fix handling of errors while in error state
2016-08-06 21:25:35 -07:00
Max Brunsfeld
b561000b2a
When there's no error on the stack, keep only the best version
2016-08-06 21:24:20 -07:00
Max Brunsfeld
c984876e3a
Remove stack versions that are worse than the finished tree
2016-08-06 21:22:44 -07:00
Max Brunsfeld
4feceabd58
Merge pull request #32 from tree-sitter/parse-table-compression
...
Parse table compression
2016-07-31 21:45:46 -07:00
Max Brunsfeld
f8c2e9d908
Include tree's original parse state in debug graphs
2016-07-31 21:35:53 -07:00
Max Brunsfeld
87ca3cb099
Reuse nodes based on state matching, not sentential form validity
...
I think that state matching is the only correct strategy for incremental
node reuse that is compatible with the new error recovery algorithm. It's
also simpler than the sentential-form algorithm. With the compressed parse
tables, state matching shouldn't be too conservative of a test.
2016-07-31 21:31:19 -07:00
Max Brunsfeld
0ee1994078
Don't have both shift and shift-extra actions in recovery states
2016-07-17 13:35:58 -07:00
Max Brunsfeld
1faa7c60f9
Log stack after pruning halted versions
2016-07-17 10:44:08 -07:00
Max Brunsfeld
1c66d90203
Mark repeat symbols as anonymous
2016-07-17 10:44:08 -07:00
Max Brunsfeld
fa8993460e
Don't reuse unexpected tokens for now
2016-07-17 07:25:13 -07:00
Max Brunsfeld
285f2272fd
Move random string helpers into a separate file
2016-07-17 06:22:05 -07:00
Max Brunsfeld
9c37c06ec7
Remove unnecessary parser debugger accessors
2016-07-04 12:20:23 -07:00
Max Brunsfeld
c3a242740b
Allow lookahead to be broken down further after performing reductions
2016-07-04 12:20:23 -07:00
Max Brunsfeld
0e2bbbd7ee
Compress parse table by allowing reductions w/ unexpected lookaheads
2016-07-04 12:20:23 -07:00
Max Brunsfeld
d554fab5b5
Remove unused tree state constant
2016-06-27 14:39:12 -07:00
Max Brunsfeld
8c26d99353
Store error recovery actions in the normal parse table
2016-06-27 14:07:47 -07:00
Max Brunsfeld
08e47001f1
Silence mismatched delete warning in spec helper
2016-06-27 13:38:49 -07:00
Max Brunsfeld
bf245f016c
Check for better stack versions before skipping a node after reducing it
2016-06-26 22:51:48 -07:00
Max Brunsfeld
9538b5b879
Don't count extra trees toward stack versions' error costs
2016-06-26 22:46:40 -07:00
Max Brunsfeld
877fe1f682
Fix incorrect exta entry in symbol metadata table
2016-06-26 22:14:31 -07:00
Max Brunsfeld
6fd3edceae
Fix logic for inserting leading & trailing extras into root node on acceptance
2016-06-26 11:57:42 -07:00
Max Brunsfeld
9972709e43
Allow error recovery to skip non-terminal nodes after error detection
2016-06-24 10:28:05 -07:00
Max Brunsfeld
76c6e47d49
Fix assignment of parser split condition
2016-06-23 13:41:38 -07:00
Max Brunsfeld
df09f37a6c
Tweak parse log messages
2016-06-23 11:42:43 -07:00
Max Brunsfeld
09b019c530
Fix test for invalid blank input
2016-06-23 09:24:26 -07:00
Max Brunsfeld
c6e9b32d3f
Print all the same parse log messages for both debugging methods
2016-06-22 22:36:11 -07:00
Max Brunsfeld
58b1d88950
Clean up breakdown_top_of_stack function
2016-06-22 22:32:38 -07:00
Max Brunsfeld
f425fbad18
Break down reused node on stack whenever lookahead can't be reused
2016-06-22 22:03:27 -07:00
Max Brunsfeld
16ca038556
Don't accept input with errors on the stack
2016-06-22 21:05:05 -07:00
Max Brunsfeld
b40c0326dc
Include parse tree rendering at end of debug output
2016-06-22 21:04:35 -07:00
Max Brunsfeld
57f669dfda
clang-format
2016-06-22 14:11:08 -07:00
Max Brunsfeld
3ceb3a1eb2
Clean up main parse loop
2016-06-22 14:10:54 -07:00
Max Brunsfeld
e7ccebc153
Avoid duplicate counting of trees when repairing errors
2016-06-21 22:58:06 -07:00
Max Brunsfeld
43ae8235fd
Remove the error action; a lack of actions implies an error.
2016-06-21 22:53:48 -07:00
Max Brunsfeld
6a7a5cfc3f
Remove nesting in parse action struct
2016-06-21 21:36:33 -07:00
Max Brunsfeld
634ee29d10
Clean up main consume_lookahead loop
2016-06-21 21:27:33 -07:00
Max Brunsfeld
38c144b4a3
Refine logic for deciding when tokens need to be re-lexed
...
* While generating the lex table, note which tokens can match the
same string. A token needs to be relexed when it has possible
homonyms in the current state.
* Also note which tokens can match substrings of each other tokens.
A token needs to be relexed when there are viable tokens that
could match longer strings in the current state and the next
token has been edited.
* Remove the logic for marking tokens as fragile on creation.
* Store the reusability/non-reusability of symbols off of individual
actions and onto the entire entry for the state & symbol.
2016-06-21 07:28:04 -07:00
Max Brunsfeld
45f7cee0c8
Handle extra tokens properly during error recovery
2016-06-18 20:46:25 -07:00
Max Brunsfeld
773e50f26b
Update error recovery specs to reflect slightly different recoveries
2016-06-18 20:46:16 -07:00
Max Brunsfeld
94721c7ec0
Rewind and re-tokenize in error mode after detecting an error
2016-06-17 21:26:03 -07:00
Max Brunsfeld
76975f56ec
Display node positions in tooltips in debugging graphs
2016-06-15 11:06:00 -07:00
Max Brunsfeld
70d3cde775
Remove extra leading newline from corpus spec texts
2016-06-15 10:31:34 -07:00
Max Brunsfeld
f69d709650
Remove unused functions
2016-06-15 10:17:54 -07:00
Max Brunsfeld
ecc7399ed3
Fix stack breakdown procedure when there are trailing extra tokens
2016-06-14 20:25:33 -07:00
Max Brunsfeld
e70547cd11
Allow recoveries that skip leading children of invisible trees
...
Before this, errors could only be recovered by skipping internal children.
2016-06-14 14:48:35 -07:00
Max Brunsfeld
6dda23796b
Don't count extra tokens in error cost computation
2016-06-14 14:47:16 -07:00
Max Brunsfeld
2109f0ed74
Handle allocation failures when copying tree arrays
2016-06-14 14:46:49 -07:00
Max Brunsfeld
f77c08eff5
Check for better stack versions earlier when handling errors
2016-06-12 17:41:25 -07:00
Max Brunsfeld
2b80e66188
Don't merge stack versions with different error costs
2016-06-12 17:27:08 -07:00