Max Brunsfeld
32e79700bf
Rename SpyReader -> SpyInput
2015-07-16 17:32:19 -07:00
Max Brunsfeld
958ace429f
Fix buffer overflow in SpyReader
2015-07-16 17:29:16 -07:00
Max Brunsfeld
0b1d70db34
Always resolve ambiguities immediately
...
No more ambiguity nodes.
Also, when merging parse stacks, merge their successors if needed.
2015-07-15 13:15:11 -07:00
Max Brunsfeld
8c5c695f5a
Reduce nesting in parse-stack spec
2015-07-10 17:50:38 -07:00
Max Brunsfeld
d6a6b0a19b
Represent ParseItemSets as ordered maps
...
This way, reductions will be added in a deterministic order
when constructing the parse table.
2015-07-10 09:17:42 -07:00
Max Brunsfeld
aff8bc3266
Split parse stack when there are multiple parse actions
2015-07-09 23:09:33 -07:00
Max Brunsfeld
f26ddf5187
Fix symbol name for ambiguity nodes
2015-07-08 17:31:21 -07:00
Max Brunsfeld
aabcb10cfb
Respect expected_conflicts field when building parse table
2015-06-28 16:22:31 -05:00
Max Brunsfeld
c9a482bbf3
Add expected_conflicts field to grammar
2015-06-26 16:14:08 -05:00
Max Brunsfeld
36d9c3be14
Organize parse-stack spec
2015-06-18 17:03:17 -07:00
Max Brunsfeld
442db56b92
Use graph-structured parse stack in parser
...
Not using the splitting feature yet.
2015-06-18 17:03:17 -07:00
Max Brunsfeld
aaaa1c8a5d
Encapsulate ParseStackNodes
2015-06-18 17:03:17 -07:00
Max Brunsfeld
6330ae997b
Reduce along all possible parse-stack paths
2015-06-18 17:03:17 -07:00
Max Brunsfeld
381f89f8ba
Create ambiguity nodes when joining stack heads
2015-06-18 17:03:16 -07:00
Max Brunsfeld
1ca5f4ab15
Clarify variable name in spec
2015-06-18 17:03:16 -07:00
Max Brunsfeld
b9dc92c36b
Add EqualsTree matcher
2015-06-18 17:03:16 -07:00
Max Brunsfeld
9e57f2b881
Start work on graph-structured stack
2015-06-18 17:03:16 -07:00
Max Brunsfeld
755894b44d
Allow multiple parse actions in parse table
2015-06-18 17:03:16 -07:00
Max Brunsfeld
3d0890eecf
Preserve tokens within errors
2015-06-15 15:26:06 -07:00
Max Brunsfeld
44774119bf
Use all caps for built-in symbol names
2015-06-15 15:26:05 -07:00
Max Brunsfeld
d5ce3a9b5a
lexer: in error mode, continue until token is found
2015-06-15 15:26:05 -07:00
Max Brunsfeld
f7e4445358
Handle goto actions after reductions in a more standard way
...
Rather than letting the reduced tree become the new lookahead symbol,
and re-adding it to the stack via a subsequent shift action, just
add it to the stack as part of the reduce action. This is more in
line with the way LR is described traditionally.
2015-05-27 10:53:02 -07:00
Max Brunsfeld
fd97b8a237
Dedup auxiliary repeat rules from different source rules
2015-05-02 20:42:47 -07:00
Max Brunsfeld
a54d293317
Include 'goal' non-terminal names in conflict description
2015-04-16 17:43:30 -07:00
Max Brunsfeld
e8db35af6b
Avoid creating redundant auxiliary repeat rules
2015-04-16 17:42:22 -07:00
Max Brunsfeld
9ef52ce2fb
Include precedences in unresolved conflict messages
2015-03-23 22:56:17 -07:00
Max Brunsfeld
b1f8ba6202
Replace {left,right}_assoc w/ prec, with an associativity argument
2015-03-23 21:06:31 -07:00
Max Brunsfeld
a19b0e75ac
🔥 keyword and keypattern functions
...
Just make strings have higher precedence than regexps.
2015-03-22 16:00:26 -07:00
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
7872ddd21b
Improve reduce/reduce conflict error message
2015-03-16 11:59:45 -07:00
Max Brunsfeld
9a198562e0
Treat parse conflicts as errors in grammar compilation
...
For now, only reduce/reduce conflicts w/ no tie-breaking precedence
are treated as errors. The rest are dropped, because shift/reduce
conflicts are currently very common because we don't have a way
of specifying associativity along w/ precedence.
2015-03-15 20:31:41 -07:00
Max Brunsfeld
8bd11e1b58
Fix parser debug messages in spec
2015-03-07 16:40:39 -08:00
Max Brunsfeld
3458fa6e50
Fix non-deterministic order in conflict description
2015-03-07 11:02:21 -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
ccb0d0d043
Store parse items' list of consumed symbols
...
Not just the consumed symbol count.
2015-02-20 22:53:27 -08:00
Max Brunsfeld
109b5616d3
Remove unused arg to action_takes_precedence
2015-01-17 14:14:49 -08:00
Max Brunsfeld
160fca6579
Refactor avoidance of redundant repeat rules
2015-01-14 21:11:19 -08:00
Max Brunsfeld
a0d9da9d5c
Rename static 'Build' methods to 'build'
2015-01-14 21:11:05 -08:00
Max Brunsfeld
34d96909d1
Move {Syntax,Lexical}Grammar into separate files
2015-01-14 21:10:41 -08:00
Max Brunsfeld
0d267e41aa
Replace LexConflictManager class with action_takes_precedence function
2015-01-11 19:50:58 -08:00
Max Brunsfeld
5dc08ccce9
Include names of in-progress rules in shift/reduce conflicts
2014-11-05 18:39:50 -08:00
Max Brunsfeld
ec31249fe6
Add commas in expected message in document debugging spec
2014-11-01 17:03:32 -07:00
Max Brunsfeld
bee756b414
Regenerate fixture parsers with better token names
2014-11-01 17:00:49 -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
d8099826f9
Workaround duplicate symbol problem in golang grammar
...
Currently, a grammar can't have a string rule and a keyword rule with
the same string.
2014-10-21 13:03:50 -07:00
Max Brunsfeld
8a03bd8978
Comment out some parts of JS grammar to speed up tests
2014-10-21 09:01:56 -07:00