Commit graph

145 commits

Author SHA1 Message Date
Max Brunsfeld
85b97c4f87 Fix error in merging character set transitions 2014-04-01 13:33:32 -07:00
Max Brunsfeld
2a222adb7e Represent character sets with unsigned chars
This is better for comparing character ranges, since
there is a definite maximum character value.
2014-03-31 18:47:18 -07:00
Max Brunsfeld
7824b3191b Fix bug in character set difference calculation 2014-03-31 18:38:54 -07:00
Max Brunsfeld
7adb0bf34f Add golang example grammar
Also, support '\a' character class shorthand in regexes,
for alphabetical characters
2014-03-29 16:29:34 -07:00
Max Brunsfeld
13c4e6e648 Tweak format for example grammars 2014-03-28 13:51:32 -07:00
Max Brunsfeld
e1ac62edc5 Give better symbol names to generated tokens
This should make debugging easier
2014-03-27 12:54:54 -07:00
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