Commit graph

112 commits

Author SHA1 Message Date
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