Max Brunsfeld
2bcd2e4d00
Reuse fragile tokens that came from the current lex state
2015-12-21 16:04:11 -08:00
Max Brunsfeld
386b124866
Ensure that there are no duplicate lex states
2015-12-20 15:46:13 -08:00
Max Brunsfeld
1c6ad5f7e4
Rename ubiquitous_tokens -> extra_tokens in compiler API
...
They were already called this in the runtime code.
'Extra' is just easier to say.
2015-12-17 15:50:50 -08:00
Max Brunsfeld
f065eb0480
Remove unused parameter to LexConflictManager
2015-12-17 15:45:47 -08:00
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
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
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
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
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
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
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
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
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
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
joshvera
06c790e16e
declare ts_point_make before using it
2015-12-02 17:51:06 -05:00
joshvera
144aab22e6
missed two
2015-12-02 17:47:46 -05:00
joshvera
debf5205fb
Don't use c-style structs
2015-12-02 17:44:14 -05:00
joshvera
e52c38a68f
Work correctly when node's offset point is zero
2015-12-02 17:12:32 -05:00
joshvera
4953182707
add row to node equality
2015-12-02 16:45:20 -05:00
joshvera
7ad82cf684
add const
2015-12-02 16:45:12 -05:00
joshvera
5e748fdf63
s/ts_tree_offset_point/ts_tree_total_size_point
2015-12-02 16:41:56 -05:00
joshvera
e674094f64
Sum the offset_point like offset in ts_tree_assign_parents
2015-12-02 16:41:40 -05:00
joshvera
3f9c8b76de
Add padding_point.row to ts_node_start_point's row.
2015-12-02 16:41:16 -05:00
joshvera
9da4aeaeff
columns start at 0 for sanity's sake
2015-11-30 17:22:47 -05:00