Commit graph

89 commits

Author SHA1 Message Date
Max Brunsfeld
820b6f4020 Fix infinite loops during table generation for left-recursive rules
Add function calls for arbitrary expressions and dot property access to javascript grammar
2014-03-26 22:43:08 -07:00
Max Brunsfeld
3f770ff3c3 Remove unused consumed_symbols vector from parse items 2014-03-26 21:04:11 -07:00
Max Brunsfeld
4454925b5a Clean up parser macros more 2014-03-26 13:03:12 -07:00
Max Brunsfeld
6a0e2c08e6 Add more features to javascript grammar 2014-03-26 08:23:13 -07:00
Max Brunsfeld
3f0203d928 Clean up character set spec 2014-03-24 22:07:25 -07:00
Max Brunsfeld
aac0786449 Resolve token conflicts by tokens' order in grammar 2014-03-24 19:18:06 -07:00
Max Brunsfeld
2a5dd3434f Fix bug in character set intersection calculation 2014-03-24 19:17:25 -07:00
Max Brunsfeld
48baf056b4 Store grammars' rules in vectors, not maps
This way, we can keep of the order in which the rules
were given, for resolving reduce/reduce conflicts.
2014-03-24 13:17:38 -07:00
Max Brunsfeld
671f1a1ddc Start work on javascript grammar 2014-03-24 09:14:29 -07:00
Max Brunsfeld
fd226a6bfe Clean up test that compiles example grammars 2014-03-24 07:26:06 -07:00
Max Brunsfeld
06cd18b483 Put example grammars in tree_sitter::examples ns 2014-03-24 07:19:31 -07:00
Max Brunsfeld
50a90e456b Handle * quantifier in regex patterns 2014-03-22 20:08:11 -07:00
maxbrunsfeld
a733d31634 Fix spec wording in follow sets spec 2014-03-12 13:06:02 -07:00
Max Brunsfeld
dbaacee497 Fix integer type warnings in json parser spec 2014-03-12 08:18:20 -07:00
Max Brunsfeld
a411e43484 Rename source files: .cpp -> .cc 2014-03-09 22:13:08 -07:00
Max Brunsfeld
10b1bd0f5c Fix includes in specs 2014-03-09 22:05:05 -07:00
Max Brunsfeld
eb30429700 Make paths explicit in #includes 2014-03-09 21:43:14 -07:00
Max Brunsfeld
ac46bdcec6 Fix some whitespace 2014-03-09 20:21:19 -07:00
Max Brunsfeld
39aa0ccc91 Add script to trim whitespace 2014-03-09 19:49:35 -07:00
Max Brunsfeld
142671c177 Separate spec helpers files for compiler and runtime specs 2014-03-08 15:26:27 -08:00
Max Brunsfeld
e479773aac Rename files to avoid duplicate basenames 2014-03-02 15:07: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
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
713b3899c5 Simplify logic for extracting tokens from grammar 2014-02-23 10:00:49 -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
2c56612650 Get makefile working 2014-02-18 09:07:00 -08:00
Max Brunsfeld
fd757c20d0 Move example grammars from fixtures -> examples dir 2014-02-17 13:18:09 -08:00
Max Brunsfeld
585f9f0054 Fix misplaced file 2014-02-17 12:59:24 -08:00
Max Brunsfeld
9e2dc14182 Extract public compiler API into its own header file 2014-02-17 12:40:46 -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
a77ca1ee08 Allow users to put their own auxiliary rules in grammars 2014-02-13 13:09:00 -08:00
Max Brunsfeld
70173512f1 Don't extract isolated blanks from grammars into tokens 2014-02-12 18:31:57 -08:00
Max Brunsfeld
9a737e2316 Use map, not unordered_map in Grammar 2014-02-12 08:30:50 -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
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
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
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
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