Max Brunsfeld
e932d09908
Avoid aggregate initialization syntax in places where C++11 doesn't allow it
2017-08-07 13:07:54 -07:00
Max Brunsfeld
bf31c19d03
Avoid initializing production vectors via initializer lists
2017-08-07 12:45:37 -07:00
Max Brunsfeld
89e250cd63
Avoid the name 'min' for a helper function
...
Windows automatically defines min or something.
2017-08-07 12:44:33 -07:00
Max Brunsfeld
f0e63adc84
Use __forceinline keyword instead of always_inline attribute on windows
2017-08-07 12:44:33 -07:00
Max Brunsfeld
b98669c7e6
Replace general array_reverse with ts_tree_array_reverse
2017-08-07 12:44:33 -07:00
Max Brunsfeld
f7bf460c87
Fix scan-build errors in get_changed_ranges
2017-08-07 10:35:06 -07:00
Max Brunsfeld
ed11ddbd38
Explicitly compare regions between subtrees in get_changed_ranges
2017-08-06 17:16:29 -07:00
Max Brunsfeld
f5aa633011
Reorder iterator methods in get_changed_ranges.c
2017-08-05 20:33:38 -07:00
Max Brunsfeld
94dc703bfc
Require that grammars' start rules be visible
2017-08-04 17:07:37 -07:00
Max Brunsfeld
1dca3a0b58
Simplify parse version reordering
2017-08-04 14:51:14 -07:00
Max Brunsfeld
85be0e7e75
Ensure that no backtracking occurs during tree-comparison
2017-08-04 14:50:50 -07:00
Max Brunsfeld
9260d8163c
Refactor and fix bugs in tree comparison algorithm
2017-08-04 14:03:41 -07:00
Max Brunsfeld
46ec0804f8
Move tree comparison function to a separate translation unit
2017-08-04 11:03:14 -07:00
Max Brunsfeld
255f7af24b
Name ParseTableBuilder fields more consistently
2017-08-04 09:47:24 -07:00
Max Brunsfeld
84e4114f79
Allow conflicts involving repeat rules to be whitelisted, via their parent rule
2017-08-03 15:18:29 -07:00
Max Brunsfeld
119c67dd78
Fix conflict reporting for shift/reduce conflicts w/ multiple reductions
...
We were failing to rule out shift actions with lower precedence.
Signed-off-by: Philip Turnbull <philipturnbull@github.com>
2017-08-02 15:13:30 -07:00
Max Brunsfeld
09f4796f6b
Get tests passing w/ new alias API
2017-08-01 14:35:34 -07:00
Max Brunsfeld
cb5fe80348
Rename RENAME rule to ALIAS, allow it to create anonymous nodes
2017-07-31 16:41:11 -07:00
Max Brunsfeld
b5f421cafb
Fix name collision that gcc didn't tolerate
2017-07-21 16:28:39 -07:00
Max Brunsfeld
2437287e3e
Remove rename symbol when reusing a previously-renamed tree
2017-07-21 16:24:33 -07:00
Max Brunsfeld
cf445da253
Allow renaming hidden rules
2017-07-21 15:58:01 -07:00
Max Brunsfeld
1df41a9107
Avoid anonymous struct to silence gcc's override-init warning (again)
2017-07-21 10:17:54 -07:00
Max Brunsfeld
cbdfd89675
Mark reductions as fragile based on their final properties
...
We previously maintained a set of individual productions that were
involved in conflicts, but that was subtly incorrect because
we don't compare productions themselves when comparing parse items;
we only compare the parse items properties that could affect the
final reduce actions.
2017-07-21 09:54:24 -07:00
Max Brunsfeld
7d9d8bce79
Handle inlined rules that contain other inlined rules
2017-07-20 15:29:06 -07:00
Max Brunsfeld
f33421c53e
Fix incorrect node renames in the presence of extra tokens
2017-07-18 21:24:34 -07:00
Max Brunsfeld
10d28d4b56
Merge pull request #92 from tree-sitter/utf16-oob
...
Add test for UTF16 out-of-bound read
2017-07-18 17:24:31 -07:00
Max Brunsfeld
4649c3a37f
Avoid creating redundant rename sequences
2017-07-18 15:29:06 -07:00
Max Brunsfeld
afb499bf2e
Handle rename symbols in ts_language APIs
2017-07-18 12:01:52 -07:00
Max Brunsfeld
9a04231ab1
Remove length restriction in external scanner serialization API
2017-07-17 17:12:36 -07:00
Max Brunsfeld
e355929a30
Handle renamed nodes properly in tree_path_get_changes
2017-07-17 17:07:56 -07:00
Phil Turnbull
e7662c2213
Handle out-of-bound read in utf16_iterate
...
Also simplify the test so we call `utf16_iterate` directly. Calling
`utf16_iterate` via `SpyInput` and `ts_document_parse` doesn't seem to reliably
trigger the problem using valgrind.
valgrind also doesn't detect the problem if we use a string literal like:
`utf16_iterate("", 1, &code_point);`
2017-07-17 13:57:12 -07:00
Max Brunsfeld
66dc12587a
Call the external scanner whenever an external token is valid
...
For some reason, there was previously some extra logic that prevented
the external scanner from being invoked if the only valid external
token also had an internal definition.
It's surprising to not call the external scanner if an external
token is valid.
2017-07-17 10:28:59 -07:00
Max Brunsfeld
99885788bc
🎨
2017-07-14 10:41:09 -07:00
Max Brunsfeld
4b40a1ed6c
Support anonymous tokens inside of RENAME rules
2017-07-14 10:19:58 -07:00
Max Brunsfeld
b3a72954ff
Introduce RENAME rule type
2017-07-13 17:17:22 -07:00
Max Brunsfeld
0b94e9d814
Don't include preceding production steps in ParseItem hash
2017-07-13 13:42:28 -07:00
Max Brunsfeld
561821d011
Remove precedence and associativity methods from ParseAction
2017-07-13 13:41:56 -07:00
Max Brunsfeld
d646889922
Simplify flatten_rule function
2017-07-13 09:59:23 -07:00
Max Brunsfeld
7293e6f0cc
Fix compile warnings
2017-07-12 22:08:36 -07:00
Max Brunsfeld
62c577af33
Remove unnecessary using statements
2017-07-12 21:41:37 -07:00
Max Brunsfeld
a3006bc2b5
Represent LookaheadSet using vectors of bool
2017-07-12 16:02:01 -07:00
Max Brunsfeld
65bf1389e1
Add a way to automatically inline rules
2017-07-11 23:13:44 -07:00
Max Brunsfeld
26a25278cd
When comparing parse items, ignore consumed part of their productions
...
This speeds up parser generation by increasing the likelihood that we'll recognize
parse item sets as equivalent in advance, rather than having to merge their states
after the fact.
2017-07-11 17:30:32 -07:00
Max Brunsfeld
a199b217f3
Optimize ParseTableBuilder for non-terminals w/ many productions
2017-07-11 12:54:29 -07:00
Max Brunsfeld
68c3ba1b8b
🎨 merge_parse_state
2017-07-10 16:46:11 -07:00
Max Brunsfeld
5bd5b4bb05
Replace <cctype> -> <cwctype>
2017-07-10 14:35:14 -07:00
Max Brunsfeld
59236d2ed1
Avoid redundant character comparisons in generated lex function
2017-07-10 14:09:31 -07:00
Max Brunsfeld
2755b07222
Don't store unfinished item signature on ParseStates
2017-07-10 10:47:38 -07:00
Max Brunsfeld
1586d70cbe
Compute conflicting tokens more precisely
...
While generating the parse table, keep track of which tokens can follow one another.
Then use this information to evaluate token conflicts more precisely. This will
result in a smaller parse table than the previous, overly-conservative approach.
2017-07-07 17:54:24 -07:00
Max Brunsfeld
a98abde529
Provide all preceding symbols as context when reporting conflicts
2017-07-07 14:52:56 -07:00