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
eace426129
Suppress unknown pragma warnings in MSVC
2017-08-09 10:14:05 -07:00
Max Brunsfeld
9d649f3382
Remove depth-based error-recovery pruning criteria
...
This code was causing ambiguities to get resolved differently depending on
whether there was an unrelated error on the stack or not.
2017-08-09 09:53:41 -07:00
Max Brunsfeld
964dd16812
Avoid unicode escape sequences when generating conflict messages
2017-08-09 09:32:58 -07:00
Max Brunsfeld
5f40adb70c
Recur to sub-rules in a deterministic order in expand_repeats
2017-08-08 17:20:04 -07:00
Max Brunsfeld
e6b43700b9
Get generated parsers compiling and loading properly on windows
2017-08-08 16:47:51 -07:00
Max Brunsfeld
9d616b3bf8
Replace size_t -> LexStateId in LexTableBuilder::remove_duplicate_states
2017-08-08 12:55:35 -07:00
Max Brunsfeld
3d351eac09
Fix some C code that MSVC doesn't like
2017-08-08 10:47:59 -07:00
Max Brunsfeld
12623deb19
Avoid struct literal syntax in point functions
2017-08-08 10:42:21 -07:00
Max Brunsfeld
947c161c2f
Use a constructor rather than aggregate initialization for Production
2017-08-08 10:41:54 -07:00
Max Brunsfeld
a2670a39dc
Avoid empty initializer list in global constant
2017-08-07 14:46:23 -07:00
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