Josh Vera
a2121cf01f
Change link from paywalled version
2017-10-16 17:29:53 -04:00
ZachTRice
50e9520133
Updated links in References
...
The links to http://harmonia.cs.berkeley.edu got to a "forbidden, you' dont have permission to access..." error page. I have updated "Efficient and Flexible Incremental Parsing" to point to the ftp location on berkeley.edu. The only hosted reference to "Incremental Analysis of Real Programming Languages" is at ACM Digital Library, I pointed the link here.
2017-10-16 17:17:49 -04:00
Max Brunsfeld
d2ae16747c
Merge pull request #106 from tree-sitter/sort-stack-versions-by-dynamic-precedence
...
Take total dynamic precedence into account in stack version sorting
2017-10-09 16:06:00 -07:00
Max Brunsfeld
121a6a66ec
Take total dynamic precedence into account in stack version sorting
...
Signed-off-by: Josh Vera <vera@github.com>
2017-10-09 15:51:22 -07:00
Max Brunsfeld
36c2b685b9
Always invalidate old chunk of text when parsing after an edit
2017-10-04 15:09:46 -07:00
Max Brunsfeld
c0073c5b72
Update error corpus to reflect C grammar changes
2017-10-04 15:06:12 -07:00
Max Brunsfeld
9f24118b17
Include trees' dynamic precedence in debug graphs
2017-10-04 10:41:20 -07:00
Rob Rix
10111cc206
Update the link to the paper
...
The old link has gone stale.
2017-10-02 10:54:06 -04:00
Max Brunsfeld
ba607a1f84
Optimize lex state merging
2017-09-18 13:40:37 -07:00
Phil Turnbull
f82e0ec5fb
Merge pull request #104 from tree-sitter/fuzzer-cflags
...
Allow fuzzer CFLAGS to be overridden by environment
2017-09-18 16:16:04 -04:00
Phil Turnbull
f08402014b
Fuzz build should use CFLAGS when linking
2017-09-15 10:06:17 -04:00
Phil Turnbull
c4854fe595
Merge remote-tracking branch 'origin/master' into fuzzer-cflags
2017-09-15 10:05:39 -04:00
Max Brunsfeld
b0fdc33f73
Remove 'extra' and 'structural' booleans from symbol metadata
2017-09-14 12:07:46 -07:00
Max Brunsfeld
d342b61ede
Re-enable JS fuzzing example test
2017-09-14 11:39:08 -07:00
Max Brunsfeld
9d67a98510
Merge pull request #103 from tree-sitter/python-assertion-failure
...
Assertion failure in parser__advance
2017-09-14 11:38:22 -07:00
Max Brunsfeld
037933ffc5
Bump LANGUAGE_VERSION constant due to incompatible parse table change
2017-09-14 11:09:26 -07:00
Max Brunsfeld
91456d7a17
Avoid duplicate error state entries for tokens that are both internal & external
2017-09-14 10:54:13 -07:00
Phil Turnbull
c57f8ae0a6
Allow fuzzer CFLAGS to be overridden by envrionment
2017-09-14 11:04:19 -04:00
Max Brunsfeld
2721f72c41
Represent MAX_COST_DIFFERENCE as unsigned
2017-09-13 16:49:18 -07:00
Max Brunsfeld
c1cf8e02a7
Merge pull request #101 from tree-sitter/merge-more-lex-states
...
Reduce the number of states in the generated lexer function
2017-09-13 16:46:58 -07:00
Max Brunsfeld
d291af9a31
Refactor error comparisons
...
* Deal with mergeability outside of error comparison function
* Make `better_version_exists` function pure (don't halt other versions
as a side effect).
* Tweak error comparison logic
Signed-off-by: Rick Winfrey <rewinfrey@github.com>
2017-09-13 16:38:15 -07:00
Phil Turnbull
d9a0fbc210
Add testcase for parser__advance assertion failure
...
The python testcase decodes to:
```
00000000 35 63 6f 6e 88 2c 29 33 2c 2c 2c 2c 63 6f 6e 88 |5con.,)3,,,,con.|
00000010 2c 2a 2c 3a 35 63 6f 6e 2c |,*,:5con,|
```
which triggers:
```
Assertion failed: ((uint32_t)0 < (&reduction.slices)->size), function parser__advance, file src/runtime/parser.c, line 1202.
```
2017-09-13 13:25:31 -04:00
Max Brunsfeld
71595ffde6
Only allow one stack link with a given type containing errors
2017-09-13 10:05:31 -07:00
Max Brunsfeld
07fb3ab0e6
Abort recoveries before popping if better versions already exist
2017-09-13 09:56:51 -07:00
Max Brunsfeld
65ed4281d4
Exclude zeros from speeds reported in benchmarks
2017-09-12 16:30:38 -07:00
Max Brunsfeld
47669e6015
Avoid halting the only non-halted entry in recover
2017-09-12 16:20:06 -07:00
Max Brunsfeld
ee2906ac2e
Don't merge stack versions that are halted
2017-09-12 16:19:28 -07:00
Max Brunsfeld
819235bac3
Limit the number of stack nodes that are included in a summary
2017-09-12 12:00:00 -07:00
Max Brunsfeld
99d048e016
Simplify error recovery; eliminate recovery states
...
The previous approach to error recovery relied on special error-recovery
states in the parse table. For each token T, there was an error recovery
state in which the parser looked for *any* token that could follow T.
Unfortunately, sometimes the set of tokens that could follow T contained
conflicts. For example, in JS, the token '}' can be followed by the
open-ended 'template_chars' token, but also by ordinary tokens like
'identifier'. So with the old algorithm, when recovering from an
unexpected '}' token, the lexer had no way to distinguish identifiers
from template_chars.
This commit drops the error recovery states. Instead, when we encounter
an unexpected token T, we recover from the error by finding a previous
state S in the stack in which T would be valid, popping all of the nodes
after S, and wrapping them in an error.
This way, the lexer is always invoked in a normal parse state, in which
it is looking for a non-conflicting set of tokens. Eliminating the error
recovery states also shrinks the lex state machine significantly.
Signed-off-by: Rick Winfrey <rewinfrey@github.com>
2017-09-11 15:22:52 -07:00
Max Brunsfeld
8b3941764f
Make outstanding_allocation_indices return a vector, not a set
2017-09-07 17:48:44 -07:00
Max Brunsfeld
4c9c05806a
Merge compatible starting token states before constructing lex table
2017-09-05 13:21:53 -07:00
Max Brunsfeld
9d668c5004
Move incompatible token map into LexTableBuilder
2017-08-31 15:46:37 -07:00
Max Brunsfeld
f8649824fa
Remove unused function
2017-08-31 15:30:44 -07:00
Max Brunsfeld
7d7e5f2c2c
Merge pull request #100 from tree-sitter/fix-randomized-test-failures
...
Fix some bugs found using randomized tests
2017-08-31 12:51:15 -07:00
Max Brunsfeld
ac9d260734
Clean up parser fields
2017-08-31 12:50:10 -07:00
Max Brunsfeld
4a0587061e
Consolidate logic for deciding on a lookahead node
2017-08-31 12:19:37 -07:00
Max Brunsfeld
41074cbf2d
🎨
2017-08-30 16:48:15 -07:00
Max Brunsfeld
fdc6ee445b
Remove parser__push helper function
2017-08-30 16:41:07 -07:00
Max Brunsfeld
1b1276bdbf
Simplify parser__condense_stack function
2017-08-30 16:36:02 -07:00
Max Brunsfeld
96a630e5df
Clean up check for leaf node reusability
2017-08-30 16:19:51 -07:00
Max Brunsfeld
8bdab7335e
Remove unnecessary reusability check after breaking down lookahead
2017-08-30 16:19:11 -07:00
Max Brunsfeld
bef536a7d0
Discard fragile reusable nodes earlier
2017-08-30 16:17:10 -07:00
Max Brunsfeld
5cbd50c7d7
Remember how far ahead the lexer looked on failed calls
...
This needs to be included in the 'bytes_scanned' property of the token
that is ultimately produced.
2017-08-29 15:04:22 -07:00
Max Brunsfeld
f3977ec213
Always call deserialize on external scanner before scanning
...
Remembering the last token that the external scanner produced is
not worth the complexity.
2017-08-29 14:41:55 -07:00
Max Brunsfeld
c285fbef38
Clear LexTableBuilder's state after detecting conflicts
2017-08-25 17:11:39 -07:00
Max Brunsfeld
4d63e26e9e
Clean up logic for falling back to error mode after lexing fails
2017-08-25 16:57:09 -07:00
Max Brunsfeld
86d5737fc2
Escape quotes when printing symbols to dot graphs
2017-08-25 16:26:40 -07:00
Max Brunsfeld
573b5f3671
Pass LexTableBuilder to ParseTableBuilder
2017-08-25 15:57:50 -07:00
Max Brunsfeld
fc4c6723b8
Add appveyor badge to README
2017-08-09 10:29:15 -07:00
Max Brunsfeld
c9a87687fc
Merge pull request #97 from tree-sitter/windows-build
...
Get the library building and the tests passing on Windows
2017-08-09 10:23:38 -07:00