Max Brunsfeld
1ec39abe6a
clang-format
2016-01-22 22:10:18 -07:00
Max Brunsfeld
f0b1d851ce
Fix uninitialized instance variable in ParseAction
2016-01-21 23:52:05 -07:00
Max Brunsfeld
e17ce2903e
Clean up ts_parser__breakdown_stack
2016-01-21 14:07:38 -07:00
Max Brunsfeld
3dde0a6f39
Handle allocation failures during parsing
2016-01-19 18:08:01 -08:00
Max Brunsfeld
1543a6c7b0
Handle allocation failures when instantiating documents
2016-01-18 11:32:10 -08:00
Max Brunsfeld
9d0835edbf
Return non-const string from ts_node_string
...
The caller should free the string.
2016-01-18 10:27:23 -08:00
Max Brunsfeld
87316f22f3
Wrap all calls to malloc and friends
2016-01-15 15:27:50 -08:00
Max Brunsfeld
19b776e74d
Fix some errors caught by clang static analyzer
2016-01-15 13:33:05 -08:00
Max Brunsfeld
569b9d4099
Allow comments within grammar JSON
2016-01-14 11:28:13 -08:00
Max Brunsfeld
49f393b75e
Merge pull request #22 from maxbrunsfeld/c-compiler-api
...
Simplify the compiler API
2016-01-13 21:08:41 -08:00
Max Brunsfeld
1142e05873
Copy lookahead state to the stack before pushing it to the vector
...
Valgrind caught this. If the vector needs to grow, the original pointer will
become invalid when the buffer is realloc'd
2016-01-13 13:49:32 -08:00
Max Brunsfeld
d4632ab9a9
Make the compile function plain C and take a JSON grammar
2016-01-11 12:33:48 -08:00
Max Brunsfeld
b69e19c525
Add plain C API for compiling a JSON grammar
2016-01-10 13:44:22 -08:00
Max Brunsfeld
36870bfced
Make Grammar a simple struct
2016-01-08 15:51:30 -08:00
Max Brunsfeld
e59f6294cb
Fix bug in lexical state de-duping
2015-12-30 11:15:36 -08:00
Max Brunsfeld
4b04afac5e
Control lexer's error-mode via explicit boolean argument
...
Previously, the lexer would operate in error-mode (ignoring any garbage input
until it found a valid token) if it was invoked in the 'error' state. Now that
the error state is deduped with other lexical states, the lexer might be invoked
in that state even when error-mode is not intended. This adds a third argument
to `ts_lex` that explicitly sets the error-mode.
This bug was unlikely to occur in any real grammars, but it caused the
node-tree-sitter-compiler test suite to fail for some grammars with only one
rule.
2015-12-30 09:43:12 -08:00
Max Brunsfeld
4ad1a666be
clang-format
2015-12-29 21:17:31 -08:00
Max Brunsfeld
939476c947
When removing duplicate lex states, update the error state too
...
Now, instead of being stored as a separate field on the parse table, the error
state is just the first state in the states vector.
2015-12-29 21:02:24 -08:00
Max Brunsfeld
97a281502e
Store parse table more compactly
2015-12-29 11:27:41 -08:00
Max Brunsfeld
f2e7058ad9
Support UTF16 directly
...
This makes the API easier to use from javascript
2015-12-28 13:53:22 -08:00
Max Brunsfeld
ff3a4baf42
Ensure parse stack heads are at the same positions
2015-12-27 12:53:56 -08:00
Max Brunsfeld
a8f50986e0
clang-format
2015-12-24 22:05:54 -08:00
Max Brunsfeld
13d8de3eb3
Remove stack head after it is accepted
2015-12-24 22:04:20 -08:00
Max Brunsfeld
f483178f83
Clean up main parser loop
2015-12-24 10:21:42 -08:00
Max Brunsfeld
7f1c5f7568
Don't use preprocesser for special tree state values
2015-12-22 14:37:29 -08:00
Max Brunsfeld
da1bc038e5
Remove nested options structs in Tree
2015-12-22 14:20:58 -08:00
Max Brunsfeld
30961143fe
Only perform breakdown if next terminal node has changes
2015-12-22 14:00:22 -08:00
Max Brunsfeld
6b11890d68
Reuse fragile parent nodes that were reduced in the current state
2015-12-22 13:59:04 -08:00
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