Commit graph

968 commits

Author SHA1 Message Date
Max Brunsfeld
a8d2585330 Fix resolution of shift-extra vs reduce actions 2015-12-17 15:19:58 -08:00
Max Brunsfeld
351b4f4aaa Remove unused parameters to ParseConflictManager 2015-12-17 15:19:00 -08:00
Max Brunsfeld
da115d81a4 Merge pull request #16 from maxbrunsfeld/incremental-reuse-fixes-take-3
Fix two more types of incorrect node reuse during incremental parsing
2015-12-17 13:54:23 -08:00
Max Brunsfeld
c495076adb Record in parse table which actions can hide splits
Suppose a parse state S has multiple actions for a terminal lookahead symbol A.
Then during incremental parsing, while in state S, the parser should not
reuse a non-terminal lookahead B where FIRST(B) contains A, because reusing B
might prematurely discard one of the possible actions that a batch parser
would have attempted in state S, upon seeing A as a lookahead.
2015-12-17 13:11:56 -08:00
Max Brunsfeld
7fbb628c78 Remove TreeSelectionCallback struct
Just make a typedef for the function type
2015-12-17 12:09:06 -08:00
Max Brunsfeld
e6f933a21f Add missing symbol metadata field initializers in specs 2015-12-17 12:06:43 -08:00
Max Brunsfeld
8e7ed275c9 Remove stray file 2015-12-17 11:55:08 -08:00
Max Brunsfeld
77a94a2929 Use ::count to check if sets and maps contain elements 2015-12-17 10:05:42 -08:00
Max Brunsfeld
66144dc28e Treat tokens that are sometimes extra as fragile 2015-12-16 20:04:45 -08:00
Max Brunsfeld
d0e107eb84 Merge pull request #15 from maxbrunsfeld/fix-es6-ambiguity-bug
Fix ambiguity-handling bug that arises in javascript w/ ES6 support
2015-12-15 22:36:04 -08:00
Max Brunsfeld
3c3d95345f Don't mutate shared lookahead nodes when setting the extra flag 2015-12-15 22:28:50 -08:00
Max Brunsfeld
71059f1d66 Don't reuse fragile tokens across different parse stack heads 2015-12-15 22:26:42 -08:00
Max Brunsfeld
9bff4d0b06 Add concise method syntax to javascript fixture grammar
This exposes an ambiguity handling bug that I discovered while adding ES6 support to
tree-sitter-javascript
2015-12-15 22:25:48 -08:00
Max Brunsfeld
8747e2d3b9 Merge pull request #14 from maxbrunsfeld/more-incremental-fixes
Fix more errors in incremental subtree reuse
2015-12-10 21:30:48 -08:00
Max Brunsfeld
da2dfd703a {s,}rand -> {s,}random
🎩 @robrix
2015-12-10 21:23:23 -08:00
Max Brunsfeld
4ca965019f Break down unverified reductions eagerly when the next node has changes 2015-12-10 21:06:22 -08:00
Max Brunsfeld
d713054d61 Record which tokens are fragile when lexing 2015-12-10 21:05:54 -08:00
Max Brunsfeld
51998ac5bb In specs, seed random number generator with clock time by default 2015-12-10 21:01:27 -08:00
Max Brunsfeld
a3fdd7f20e Improve random word generation in random corpus specs 2015-12-10 16:47:55 -08:00
Max Brunsfeld
6abce098c0 Track whether parse stack was split before consuming each lookahead 2015-12-10 13:00:27 -08:00
Max Brunsfeld
75f31a79a3 Treat reduce actions with different production IDs as distinct 2015-12-10 13:00:26 -08:00
Max Brunsfeld
2c2c567a29 Improve randomized edits in corpus specs 2015-12-09 13:37:03 -08:00
Max Brunsfeld
dc28a10bf6 Merge pull request #13 from maxbrunsfeld/incremental-reuse-fixes
Fix some errors in incremental subtree reuse
2015-12-08 17:43:05 -08:00
Max Brunsfeld
7d066ff632 Change the random seed for the corpus specs 2015-12-08 17:32:16 -08:00
Max Brunsfeld
924ce8c1b3 Fix tracking of lookahead positions for different parse stack heads 2015-12-08 13:02:25 -08:00
Max Brunsfeld
26e34ddcbb Allow all parse stack heads to finish 2015-12-08 13:01:33 -08:00
Max Brunsfeld
a7ca28403e Log when selecting a tree in an ambiguity 2015-12-08 12:25:41 -08:00
Max Brunsfeld
10286f307f Pass reference to parser in stack's tree selection callback 2015-12-08 12:21:27 -08:00
Max Brunsfeld
4abb415113 Handle parse stack splitting while breaking down unverified reduction 2015-12-06 21:10:47 -08:00
Max Brunsfeld
4d48a2b1b5 Mark direct parents of errors as fragile 2015-12-06 20:31:10 -08:00
Max Brunsfeld
98f190d3ba When the parse stack is split, mark all reductions as fragile 2015-12-06 20:30:48 -08:00
Max Brunsfeld
76e4599d5e For now, allow any expression as an assignment LHS 2015-12-06 14:14:17 -08:00
Max Brunsfeld
26dad87299 Always mark reduce actions as fragile when they're discarded due to precedence 2015-12-06 14:09:24 -08:00
Max Brunsfeld
738c49abc8 Log each step when breaking down the parse stack 2015-12-04 20:57:33 -08:00
Max Brunsfeld
d69fef11f9 Break down top of parse stack when needed
Also, start randomizing the edits in the corpus specs
2015-12-04 20:57:33 -08:00
Max Brunsfeld
08d50c25ae clang-format 2015-12-04 20:56:33 -08:00
Max Brunsfeld
27bce56ef2 Merge pull request #12 from maxbrunsfeld/api-cleanup
Clean up API a bit after the addition of row/column tracking
2015-12-04 20:41:20 -08:00
Max Brunsfeld
d2bf88d5fe Include rows and columns in TSLength
This way, we don't have to have separate 1D and 2D versions for so many values
2015-12-04 20:20:29 -08:00
Max Brunsfeld
8939bd549d Fix named child count computation
Signed-off-by: Josh Vera <vera@github.com>
2015-12-04 15:51:04 -08:00
Max Brunsfeld
22c76fc71b Remove TSLength from runtime header
Refactor node functions now that character offset and byte offset are stored separately
2015-12-04 10:45:30 -08:00
Max Brunsfeld
8e217f758c Use individual args instead of TSLength in input seek function 2015-12-03 23:06:01 -08:00
Max Brunsfeld
b3a6de6dad Replace node pos/size functions with start/end char/byte functions 2015-12-03 22:59:27 -08:00
Max Brunsfeld
fe5286f863 Merge pull request #11 from maxbrunsfeld/move-ubiquitous-tokens-outward
Put ubiquitous tokens as high in the tree as possible
2015-12-03 10:06:50 -08:00
Max Brunsfeld
8a146a9bef Reset lexer correctly when old input was blank 2015-12-03 10:00:39 -08:00
Max Brunsfeld
e32fe07432 Merge pull request #10 from maxbrunsfeld/more-symbol-metadata
Provide more metadata about symbols in TSLanguage struct
2015-12-02 16:01:17 -08:00
Max Brunsfeld
863cabc827 Don't include trailing ubiquitous tokens as children when reducing 2015-12-02 15:31:15 -08:00
Max Brunsfeld
ad619d95f6 Add 'extra' field to symbol metadata
This stores whether a symbol is only ever used as a ubiquitous token. This will
allow ubiquitous nodes to be reused more effectively: if they are always
ubiquitous, then they can be reused immediately, and otherwise, they must be
broken down in case they need to be used structurally.
2015-12-02 15:10:24 -08:00
Max Brunsfeld
64e56f5acc Add assignments to C grammar
This creates another source of ambiguity: assignments vs initializations
for declarations. This is good for testing ambiguity handling
2015-12-02 15:10:24 -08:00
Max Brunsfeld
f08554e958 Replace NodeType enum with SymbolMetadata bitfield
This will allow storing other metadata about symbols, like if they
only appear as ubiquitous tokens
2015-12-02 15:10:24 -08:00
Max Brunsfeld
53424699e4 Comment all the steps of prepare_grammar 2015-12-02 14:56:59 -08:00