Max Brunsfeld
80ec303b10
Replace prec rule w/ left_assoc and right_assoc
...
Consider shift/reduce conflicts to be compilation errors unless
they are resolved by a specified associativity.
2015-03-16 23:12:34 -07:00
Max Brunsfeld
8bd11e1b58
Fix parser debug messages in spec
2015-03-07 16:40:39 -08:00
Max Brunsfeld
2d436cf141
Identify fragile reductions at compile time
2015-02-21 15:11:03 -08:00
Max Brunsfeld
a92067702d
Use a more exact test for reusability of error nodes
...
Based on the concept of node fragility from wagner's incremental
parsing paper
2015-02-21 10:39:58 -08:00
Max Brunsfeld
75da0a5774
Add language specs for removal of characters
2015-02-21 01:28:33 -08:00
Max Brunsfeld
ec31249fe6
Add commas in expected message in document debugging spec
2014-11-01 17:03:32 -07:00
Max Brunsfeld
3bc4971fd5
Don't reuse any nodes that contain an error as a child node
2014-10-23 12:50:37 -07:00
Max Brunsfeld
647c3e2010
Add tests for editing all language examples
...
This drove out several fixes to the incremental parsing algorithm.
There are a few examples which still don't work and which have
been explicitly excluded, for now.
2014-10-22 20:10:08 -07:00
Max Brunsfeld
de9a48d11f
Tweak debugging in parser and lexer
2014-10-22 20:10:08 -07:00
Max Brunsfeld
91cf35b72c
Rework javascript fixture grammar
2014-10-21 08:49:16 -07:00
Max Brunsfeld
8134b64d00
Remove repetition from language spec descriptions
2014-10-19 12:36:43 -07:00
Max Brunsfeld
c26cee5d18
Remove debugger in parser spec
2014-10-17 23:47:20 -07:00
Max Brunsfeld
0962b21dd3
Fix parse errors with tree-reuse
...
- Don't reuse error nodes
- When re-using nodes, update lexer's token_end_position
2014-10-17 23:20:36 -07:00
Max Brunsfeld
ae0a7fc97d
Add logging debugger for debugging failing tests
2014-10-17 23:05:08 -07:00
Max Brunsfeld
41a067fef9
Fix build warnings in document spec
2014-10-17 21:27:49 -07:00
Max Brunsfeld
8cf800ef5d
Unify debugging API for parsing and lexing
2014-10-17 17:52:54 -07:00
Max Brunsfeld
22ee68e1a9
Make node for each var assignment in JS grammar
2014-10-15 15:04:57 -07:00
Max Brunsfeld
d3137c6ac6
Organize parser spec
2014-10-14 23:23:12 -07:00
Max Brunsfeld
d33b074c30
Don't call input::seek_fn unnecessarily
2014-10-14 22:56:42 -07:00
Max Brunsfeld
b5d022a70c
Fix missing field warnings for debugger structs
2014-10-14 22:50:24 -07:00
Max Brunsfeld
c594208ab8
Allow callbacks to be specified for debug output
2014-10-13 01:02:18 -07:00
Max Brunsfeld
fb38140317
Discard portion of right subtree that is within the edited region
2014-10-12 11:51:12 -07:00
Max Brunsfeld
f460b921e2
Fix off-by-one error in storing reusable right-subtree
2014-10-10 12:10:23 -07:00
Max Brunsfeld
4dcc712a8c
Start work on re-using right side of parse tree
2014-10-09 19:58:15 -07:00
Max Brunsfeld
af7f57a80e
Fix sizing of error nodes after edits
2014-10-05 16:56:50 -07:00
Max Brunsfeld
e5ea4efb0b
Use stdbool.h
2014-10-03 16:06:08 -07:00
Max Brunsfeld
808b003f1a
Read unicode characters correctly in Lexer advance
2014-10-03 15:44:49 -07:00
Max Brunsfeld
1fa3bf0f07
In SpyReader::read, always return complete unicode characters
2014-10-03 14:30:19 -07:00
Max Brunsfeld
17f43e5e0c
Clean up SpyReader
2014-10-03 14:21:39 -07:00
Max Brunsfeld
a69dfa08f3
Add spec for inserting text w/ unicode characters
2014-10-02 11:54:00 -07:00
Max Brunsfeld
8bee9d8fb9
Fix typo in parser spec descriptions
2014-10-02 11:52:58 -07:00
Max Brunsfeld
0f524121f1
Add SpyReader methods for inserting/removing by char index
2014-10-02 11:43:22 -07:00
Max Brunsfeld
5f313896c3
Make ::input a method on SpyReader, not a field
2014-09-30 14:57:57 -07:00
Max Brunsfeld
8d7d9af661
Remove unnecessary helper function in parser spec
2014-09-29 10:51:12 -07:00
Max Brunsfeld
700919951e
Reorganize parser spec about handling edits
2014-09-29 10:48:35 -07:00
Max Brunsfeld
7988829c08
Add spec for recognition of UTF8 characters
2014-09-27 16:00:48 -07:00
Max Brunsfeld
26ac5788b6
Don't use struct literal syntax for TSLength
2014-09-26 16:31:36 -07:00
Max Brunsfeld
04dc721241
Add missing import for string.h
2014-09-26 16:21:09 -07:00
Max Brunsfeld
c1565c1aae
Track AST nodes' sizes in characters as well as bytes
...
The `pos` and `size` functions for Nodes now return TSLength structs,
which contain lengths in both characters and bytes. This is important
for knowing the number of unicode characters in a Node.
2014-09-26 16:15:07 -07:00
Max Brunsfeld
c576d7d4a0
In SpyReader, don't return pointers into main content string
...
This improves test coverage of the lexer. Before, a SpyReader's read function
would return pointers into a single string that contained the entire text. This
could have masked bugs where out-of-bounds characters were being read.
Now the chunks returned by the reader are copied into a separate buffer.
2014-09-26 16:12:52 -07:00
Max Brunsfeld
68d6e242ee
Fix parsing of wildcard patterns at the ends of documents
...
- Remove special EOF handling from lexer
- Explicitly exclude the EOF character from all-inclusive character sets.
2014-09-11 13:10:23 -07:00
Max Brunsfeld
f05762b4a0
Move parser tests into their own file
2014-09-10 18:49:53 -07:00
Max Brunsfeld
1ff7cedf40
Unify ubiquitous tokens and lexical separators in API
2014-09-07 22:16:45 -07:00
Max Brunsfeld
ed11ef557a
Fix expansion of repeat rules into recursive rules
...
Previously, the way repeat rules were expanded, the auxiliary
rule always needed to be reduced, even if the repeating content
was empty. This caused problems in parse states where some items
contained the repeat rule and some did not. To make those cases
work, the repeat rule had to explicitly be marked as optional.
With this change, that is no longer necessary.
2014-09-07 09:39:14 -07:00
Max Brunsfeld
43ecac2a1d
Expose debug flag on document
2014-09-06 17:56:00 -07:00
Max Brunsfeld
3dea1261a6
Clean up document specs for incremental parsing
2014-09-03 18:48:10 -07:00
Max Brunsfeld
c72445d808
Fix inc parsing for nodes containing ubiq tokens
2014-09-03 13:17:06 -07:00
Max Brunsfeld
ad52bdc448
Fix inc parsing when appending to end of a token
2014-09-03 07:09:15 -07:00
Max Brunsfeld
77529ace3d
Fix infinite loop in certain cases w/ unterminated tokens
2014-09-03 00:38:44 -07:00
Max Brunsfeld
7d81126df3
Remove unnecessary import of public header in specs
2014-09-02 22:17:04 -07:00