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