Max Brunsfeld
3cb65c9c81
Make the EOF be an auxiliary symbol
...
This way, it couldn’t conflict if a user had a rule called “__END__”
2014-02-10 18:53:01 -08:00
Max Brunsfeld
15c9e2d398
Make ordering of cases deterministic in generated parsers
2014-02-10 18:38:01 -08:00
Max Brunsfeld
8baa1396fd
Properly merge transitions on overlapping character sets!
2014-02-10 13:20:43 -08:00
Max Brunsfeld
905a408998
Make separate functions for character-level and syntax-level rule transitions
2014-02-09 14:31:27 -08:00
Max Brunsfeld
e92ac719f4
Implement CharacterSet intersections
2014-02-08 15:26:10 -08:00
Max Brunsfeld
b01c672fca
Replace some initializer_lists with vectors
2014-02-07 13:26:51 -08:00
Max Brunsfeld
df3397f02c
Implement character set difference
2014-02-07 12:57:35 -08:00
Max Brunsfeld
b94fa3ed35
Clarify character set specs
2014-02-06 12:58:00 -08:00
Max Brunsfeld
e8337a3c70
Fix errors in computing character set unions
2014-02-06 09:12:03 -08:00
Max Brunsfeld
8b1aeee0e3
Remove unused ‘unexpected token’ handling
2014-02-06 09:06:52 -08:00
Max Brunsfeld
d3d25f2683
Represent character sets as sets of character ranges
2014-02-05 18:56:04 -08:00
Max Brunsfeld
8cce11a52a
Rename Character -> CharacterSet, CharacterMatch -> CharacterRange
2014-02-03 13:05:51 -08:00
Max Brunsfeld
716a4a4259
Store character rules’ matches in a set, not a vector
2014-01-31 18:56:43 -08:00
Max Brunsfeld
5ed5ae7514
In LR(1) items, only store consumed symbols as booleans
...
the booleans represent the symbols point to auxiliary tokens
or not. This is all we need to know for the purpose of building
parse tables. Any other information just leads to redundant
parse states.
2014-01-31 00:13:05 -08:00
Max Brunsfeld
0d3a941848
Add support for character ranges in regex patterns
2014-01-30 18:54:39 -08:00
Max Brunsfeld
60e2d00b4d
Parse simple character sets in pattern rules
2014-01-30 13:04:31 -08:00
Max Brunsfeld
28e10dc722
Fix bug in character rule equality
2014-01-30 13:04:10 -08:00
Max Brunsfeld
7f62e752be
Allow Character rules to handle arbitrary character sets
2014-01-30 08:34:20 -08:00
Max Brunsfeld
bc1d115ee2
Update todo
2014-01-29 09:35:22 -08:00
Max Brunsfeld
7d297f2f9e
Remove auxiliary rules from syntax tree
2014-01-28 22:09:37 -08:00
Max Brunsfeld
c3b65d22bf
Improve prepare_grammar specs
2014-01-28 18:44:14 -08:00
Max Brunsfeld
fd0d77ef8b
Separate auxiliary rules from user-specified rules
2014-01-28 13:27:30 -08:00
Max Brunsfeld
19e5b2a563
Make token extraction work for repeat rules
2014-01-28 12:52:29 -08:00
Max Brunsfeld
ca33c3942a
In parse table, store symbols as Symbol objects, not strings
2014-01-27 13:40:10 -08:00
Max Brunsfeld
0877d01194
Add stream operator for parse states
2014-01-26 16:38:41 -08:00
Max Brunsfeld
5d9dc71da1
Remove default_actions from ParseTable
2014-01-25 23:40:51 -08:00
Max Brunsfeld
3ca2e126be
Remove unnecessary public START and END constants
2014-01-25 21:34:46 -08:00
Max Brunsfeld
5eb5b61c14
Don’t pass rule names to code generator separately from parse tables
2014-01-25 20:45:00 -08:00
Max Brunsfeld
b85b15db42
Refactor extract tokens function
2014-01-24 23:41:43 -08:00
Max Brunsfeld
67fa81d079
Convert repeat rules into pairs of recursive rules
2014-01-24 18:27:29 -08:00
Max Brunsfeld
cbcf28f9d4
Update todo
2014-01-24 00:00:31 -08:00
Max Brunsfeld
8208aae060
Fix transitions for sequences whose left side can be blank
2014-01-23 23:56:37 -08:00
Max Brunsfeld
5776846227
Make compile take a name argument
...
Start work on JSON fixture grammar
2014-01-23 13:48:07 -08:00
Max Brunsfeld
bb42543f1b
Fix broken compiler test
2014-01-23 13:10:37 -08:00
Max Brunsfeld
432e97e063
Improve parser runtime specs
2014-01-23 13:00:08 -08:00
Max Brunsfeld
8a317f6918
Manage lookahead symbol correctly after a reduction
2014-01-22 23:04:29 -08:00
Max Brunsfeld
e174b89133
Treat end of input like a normal token
2014-01-22 23:04:11 -08:00
Max Brunsfeld
3c42de1718
Fix errors in item set transition computation
2014-01-21 23:45:02 -08:00
Max Brunsfeld
be5e406c96
Do less work when loading build_tables spec
2014-01-21 23:35:04 -08:00
Max Brunsfeld
1c747f20a2
Print expected symbol names in parse errors
2014-01-21 23:35:04 -08:00
Max Brunsfeld
42f6481910
Move stream operators for container types to separate header file
2014-01-21 23:35:04 -08:00
Max Brunsfeld
1bf216b796
Rename next_{terminals,non_terminals} to first_set and follow_sets
...
This is to prepare for keeping track of lookahead symbols as part
of computing follow sets
2014-01-19 01:49:56 -08:00
Max Brunsfeld
289992344e
Make separate Item classes for parsing and lexing
2014-01-18 09:47:26 -08:00
Max Brunsfeld
d015d57a53
Remove ItemSet class; just use a set
2014-01-13 18:47:57 -08:00
Max Brunsfeld
29f73afbc5
Compute FIRST sets correctly
2014-01-13 12:57:48 -08:00
Max Brunsfeld
4cacdcba70
Fix parser position in parse error messages
2014-01-13 12:57:12 -08:00
Max Brunsfeld
a21c42ca85
Rename close_item_set -> item_set_closure
2014-01-12 09:13:53 -08:00
Max Brunsfeld
9231fa6095
Consolidate boilerplate in C headers
2014-01-11 18:16:52 -08:00
Max Brunsfeld
3f4cde7488
Move parser functions to the header
...
- this way they can be inlined by the compiler if need be
2014-01-11 18:15:55 -08:00
Max Brunsfeld
7a3092b765
Refactor parser error messages
...
- move message generation to TSParseError,
so that Parser doesn’t need to import <string>, and can
be compiled as plain C.
2014-01-11 17:59:45 -08:00