Max Brunsfeld
c25fa9910e
Fix query match failure when indefinite steps have no captures
...
Fixes #937
2021-02-25 21:41:49 -08:00
Max Brunsfeld
774ae5e3d5
In parse tables, store production ids as 16 bits
...
Also remove the use of bitfields from the parse table format.
In all cases, bitfields were not necessary to achieve the
current binary sizes. Avoiding them makes the binaries more
portable.
There was no way to make this change backward-compatible,
so we have finally dropped support for parsers generated
with an earlier version of Tree-sitter.
At some point, when Atom adopts this version of Tree-sitter,
this change will affect Atom users who have installed packages
using third-party Tree-sitter parsers. The packages will need
to be updated to use a regenerated version of the parsers.
2021-02-25 16:12:31 -08:00
Max Brunsfeld
c2c63baf5b
query: Fix escape sequence parsing in anonymous node patterns
...
Fixes #776
Fixes #760
2020-10-28 13:55:13 -07:00
Max Brunsfeld
84433494a5
Fix query analysis error for rules w/ required hidden tokens
...
Refs tree-sitter/node-tree-sitter#69
2020-10-12 09:46:18 -07:00
Max Brunsfeld
857a9ed07b
query: Handle captured wildcard nodes at the root of patterns
2020-10-08 12:34:08 -07:00
Max Brunsfeld
d1c95193c1
query: Fix invalid use of slice::from_raw_parts
2020-10-05 12:08:53 -07:00
Max Brunsfeld
297e2bcb28
static query analysis: Fix handling of fields in hidden nodes
2020-09-23 16:55:48 -07:00
Max Brunsfeld
a544200a6c
Simplify query code for matching supertypes
2020-09-23 11:55:03 -07:00
Max Brunsfeld
21c3bbc4b4
Account for supertypes during query analysis
2020-09-23 10:55:31 -07:00
Max Brunsfeld
b5a9adb555
Allow queries to match on supertypes
...
Co-authored-by: Ayman Nadeem <aymannadeem@github.com>
2020-09-21 12:34:48 -07:00
Max Brunsfeld
36a8821f3e
Fix behavior of the last child operator in tree queries
2020-09-02 12:10:04 -07:00
Max Brunsfeld
18150a1573
Merge pull request #644 from tree-sitter/query-pattern-is-definite
...
Analyze queries on construction to identify impossible patterns, and patterns that will definitely match
2020-09-02 10:28:21 -07:00
Björn Linse
00c470ab2a
Fix a few cases of Clang 10 with UBSAN detecting undefined behavior
...
Clang 10 considers adding any offset, including 0, to the null pointer
to be undefined behavior. `(void *)NULL + 0 = kaboom`.
2020-08-25 19:34:44 +02:00
Max Brunsfeld
4aba684d66
Control recursion depth explicitly during query analysis
2020-08-24 16:55:56 -07:00
Max Brunsfeld
315f87bbff
Remove unnecessary parameter from sorted array functions
2020-08-24 12:07:57 -07:00
Max Brunsfeld
2eb04094f8
Handle aliased parent nodes in query analysis
2020-08-21 14:12:04 -07:00
Max Brunsfeld
456b1f6771
Fix handling of alternations and optional nodes in query analysis
2020-08-20 16:28:54 -07:00
Max Brunsfeld
9daec9cb22
Tweak impossible pattern error messages
2020-08-20 13:35:11 -07:00
Max Brunsfeld
4301110c12
query: Indicate specific step that's impossible
2020-08-20 13:06:38 -07:00
Max Brunsfeld
d47346abc0
Avoid pushing duplicate start states in query analysis
2020-08-20 10:07:22 -07:00
Max Brunsfeld
aac75e35b1
Optimize iteration over state successors during query analysis
2020-08-19 14:56:57 -07:00
Max Brunsfeld
bd42729a41
query: Avoid early-returning captures due to predicates
2020-08-18 13:01:45 -07:00
Max Brunsfeld
604f9e8148
query: Assign is_definite correctly for steps within nested sub-patterns
2020-08-18 10:55:03 -07:00
Max Brunsfeld
91fc9f5399
Use is_definite flag in ts_query_cursor_next_capture
2020-08-17 16:50:59 -07:00
Max Brunsfeld
c3f9b2b377
Fix query analysis bugs found in ruby tags query
2020-08-17 09:57:06 -07:00
Max Brunsfeld
1ea29053e1
Merge branch 'master' into query-pattern-is-definite
2020-08-14 09:31:55 -07:00
Max Brunsfeld
af655547e5
Fix handling of queries with many patterns with leading repetitions
2020-07-31 12:47:58 -07:00
Max Brunsfeld
411f69d13b
query: Optimize 'longest-match' filtering
2020-07-30 13:34:34 -07:00
Max Brunsfeld
df5510acfc
query: Remove limit on number of in-progress states
2020-07-30 12:59:34 -07:00
Max Brunsfeld
de2b71d465
Fix query bug when max permutations are exceeded
2020-07-23 16:05:50 -07:00
Tuấn-Anh Nguyễn
740d864e67
Add '.' as a valid start of a predicate, in addition to '#'
...
See https://github.com/ubolonton/emacs-tree-sitter/issues/38
2020-07-19 15:46:39 +07:00
Max Brunsfeld
4535efce69
query: Prevent dropping of matches when exceeding range maximum
...
Fixes #685
2020-07-17 09:39:06 -07:00
Max Brunsfeld
cc37da7457
Query analysis: fix propagation of uncertainty from later siblings
2020-06-26 16:46:12 -07:00
Max Brunsfeld
645aacb1e7
Optimize query analysis using binary search
2020-06-26 15:40:34 -07:00
Max Brunsfeld
997ef45992
Handle parent nodes with simple aliases in query analysis
2020-06-26 15:05:10 -07:00
Max Brunsfeld
19baa5fd5e
Clean up and document query analysis code
2020-06-25 17:56:43 -07:00
Max Brunsfeld
891de051e2
Fix population of subgraph nodes when analyzing queries
2020-06-25 15:06:27 -07:00
Max Brunsfeld
9fb39b8954
Start work on handling alternatives when analyzing queries
2020-06-25 15:06:27 -07:00
Max Brunsfeld
e3cf5df039
Use actual step indices when walking subgraphs
2020-06-25 15:06:27 -07:00
Max Brunsfeld
7f955419a8
Start work on recognizing impossible patterns
2020-06-25 15:06:27 -07:00
Max Brunsfeld
4c2f36a07b
Mark steps as definite on query construction
...
* Add a ts_query_pattern_is_definite API, just for debugging this
* Store state_count on TSLanguage structs, to allow for scanning parse tables
2020-06-25 15:06:27 -07:00
Max Brunsfeld
deeeb67a3b
query: Fix handling of alternations under field names ( #661 )
2020-06-24 14:20:56 -07:00
Thomas Vigouroux
81d533d2d1
Fix compilation warnings ( #635 )
...
* lib: fix compilation warnings
* ci: add CFLAGS
2020-06-03 12:19:57 -07:00
Max Brunsfeld
47d607da8d
Add alternative syntax in queries ( #630 )
...
* Add alternative syntax in queries
* Add tests and tweak error handling for alternatives in queries
2020-06-01 13:23:07 -07:00
Max Brunsfeld
462c86903f
Improve tree queries' ability to handle large numbers of nested matches ( #624 )
...
* query: Acquire capture lists lazily, allow more concurrent states
* Fix some static analysis warnings
2020-05-18 13:40:24 -07:00
Max Brunsfeld
fce5c50f81
Fix wasm query tests
2020-05-11 16:19:42 -07:00
Max Brunsfeld
68f43b5865
Make query syntax backward-compatible
2020-05-11 13:23:44 -07:00
Max Brunsfeld
85c998d572
Change the wildcard syntax in tree queries
...
1. Use '_' instead of '*'.
2. Add '*' as a postfix operator for zero-or-more repetitions
Signed-off-by: Patrick Thomson <patrickt@github.com>
2020-05-11 13:04:04 -07:00
Max Brunsfeld
40262483a9
Change query syntax for predicates
...
Signed-off-by: Patrick Thomson <patrickt@github.com>
2020-05-11 12:35:51 -07:00
Max Brunsfeld
9c0535cea6
Fix logic for aborting failed matches
2020-05-08 14:15:25 -07:00