Commit graph

47 commits

Author SHA1 Message Date
Max Brunsfeld
8deeff392b Fix memory leak in tree 2014-02-26 19:54:22 -08:00
Max Brunsfeld
63718d5bad Add basic support for error recovery 2014-02-26 19:03:43 -08:00
Max Brunsfeld
df05c75525 Backfill unit tests for follow sets
Also, add some comment docs for some compiler functions
2014-02-26 00:39:31 -08:00
Max Brunsfeld
4541332c2b Put definition of EOF symbol back in parse table builder (not in parser.h) 2014-02-25 13:25:58 -08:00
Max Brunsfeld
e58a6d8ba7 Start work on error recovery
- In runtime, make parse errors part of the parse tree
- Add error state to lexers in which they can accept any token
2014-02-24 18:42:54 -08:00
Max Brunsfeld
2c30dce08e Refactor rule visitors 2014-02-23 18:46:53 -08:00
Max Brunsfeld
e87380a8b7 Make separate PreparedGrammar subclass of Grammar for internal use 2014-02-19 13:36:38 -08:00
Max Brunsfeld
acad97cfd2 Separate concepts of hidden and auxiliary symbols
This way, we can hide auxiliary symbols from library users,
but still allow them to use hidden symbols
2014-02-19 13:05:54 -08:00
Max Brunsfeld
7c57c521af Add missing header includes
For some reason, xcode tolerated these missing includes.
Travis CI doesn't.
2014-02-19 09:25:06 -08:00
Max Brunsfeld
2c56612650 Get makefile working 2014-02-18 09:07:00 -08:00
Max Brunsfeld
d09fa910ef Put public headers in tree_sitter directory 2014-02-17 12:53:57 -08:00
Max Brunsfeld
9e2dc14182 Extract public compiler API into its own header file 2014-02-17 12:40:46 -08:00
Max Brunsfeld
a63624f2aa Simplify hashing of rules 2014-02-15 16:12:16 -08:00
Max Brunsfeld
5c1a0982df Change repeat to mean zero-or-more 2014-02-15 15:43:32 -08:00
Max Brunsfeld
bf07522026 Fix bug in FIRST set function 2014-02-13 18:52:17 -08:00
Max Brunsfeld
5ce55ce26f Improve stream method for Items 2014-02-13 13:12:00 -08:00
Max Brunsfeld
812f27f43a Clean up using statements 2014-02-12 23:06:26 -08:00
Max Brunsfeld
a8588cd4d3 Split up item set transition functions 2014-02-12 22:56:44 -08:00
Max Brunsfeld
7490a7ac94 Change repeat to mean zero-or-more in lexical rules
Still need to make it work this way in syntactic rules
2014-02-12 18:35:29 -08:00
Max Brunsfeld
dd0feea8e6 Remove more unused includes 2014-02-12 08:21:59 -08:00
Max Brunsfeld
27f305d556 Put rule_can_be_blank function in its own file 2014-02-11 13:21:45 -08:00
Max Brunsfeld
1962c17f45 Remove transition_map class 2014-02-11 13:15:44 -08:00
Max Brunsfeld
91489363ca Remove custom map function on transition maps 2014-02-10 21:17:37 -08:00
Max Brunsfeld
66f7dcf28a Remove some unused imports 2014-02-10 21:09:43 -08:00
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
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
b01c672fca Replace some initializer_lists with vectors 2014-02-07 13:26:51 -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
7f62e752be Allow Character rules to handle arbitrary character sets 2014-01-30 08:34:20 -08:00
Max Brunsfeld
7d297f2f9e Remove auxiliary rules from syntax tree 2014-01-28 22:09:37 -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
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
67fa81d079 Convert repeat rules into pairs of recursive rules 2014-01-24 18:27:29 -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
3c42de1718 Fix errors in item set transition computation 2014-01-21 23:45:02 -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
a21c42ca85 Rename close_item_set -> item_set_closure 2014-01-12 09:13:53 -08:00
Max Brunsfeld
8881214f0d Separate table building operations from Item, ItemSet value objects 2014-01-11 16:49:57 -08:00
Max Brunsfeld
92cec5758f Reorganize compiler directory 2014-01-11 15:14:17 -08:00