Commit graph

53 commits

Author SHA1 Message Date
Max Brunsfeld
5145bba53d Silence missing-initializer warnings for gcc 2014-04-12 20:16:16 -07:00
Max Brunsfeld
53285f7d0c Give rule-specific names to repeat helper rules 2014-04-09 18:41:43 -07:00
Max Brunsfeld
bd5ec68c96 Get generated parsers building under gcc 2014-04-08 22:11:20 -07:00
Max Brunsfeld
f71d7bae16 Record parse conflicts when compiling grammars
Need to remove duplicate conflicts
2014-04-08 18:47:42 -07:00
Max Brunsfeld
be1c8e0f17 Add dynamic property access to javascript grammar 2014-04-05 15:55:20 -07:00
Max Brunsfeld
5320cad065 Trim trailing whitespace 2014-04-04 13:10:55 -07:00
Max Brunsfeld
2191a7d988 Add switch statements to javascript grammar 2014-04-04 13:10:33 -07:00
Max Brunsfeld
129d2b9314 Remove extra EOF actions in lexer 2014-04-04 08:44:35 -07:00
Max Brunsfeld
1cc7e32e2d Fix handling of tokens consisting of separator characters
The parser is no longer hard-coded to skip whitespace. Tokens
such as newlines, whose characters overlap with the separator
characters, can now be correctly recognized.
2014-04-03 19:10:09 -07:00
Max Brunsfeld
a79a7435de Remove remaining trailing whitespace from generated c code 2014-03-29 19:21:42 -07:00
Max Brunsfeld
2cd595d81a Clean up helper functions in example grammars 2014-03-29 19:02:00 -07:00
Max Brunsfeld
8e1b78ca8e Remove trailing whitespace from generated c code 2014-03-29 19:00:31 -07:00
Max Brunsfeld
7c502e5b58 Fix ambiguity in golang grammar 2014-03-29 18:59:54 -07:00
Max Brunsfeld
99817a38c1 Improve trees generated by arithmetic grammar
This work should inform how to implement operator
precedence helper functions
2014-03-29 18:37:51 -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
324f55f1ce Add error recovery to for loops in javascript grammar 2014-03-28 13:11:12 -07:00
Max Brunsfeld
2e11f60710 Add for loops to javascript grammar 2014-03-28 12:59:47 -07:00
Max Brunsfeld
5deeebc38c Rename string_helpers file .cpp -> .cc 2014-03-27 19:58:57 -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
2226234924 Add error recovery to javascript if statements 2014-03-26 23:02:57 -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
05e16a8c46 Remove ordering of parse and lex items
Using an unordered_map and unordered_set to store these
speeds up grammar compilation significantly. The ordering
method on items was using the rules' .to_string method to
compute the order, which was not a meaningful comparison,
and was probably slow.
2014-03-26 13:13:22 -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
059f7ff9d5 Add else blocks to javascript grammar 2014-03-25 23:40:53 -07:00
Max Brunsfeld
f601322956 Clean up macros in parser.h 2014-03-25 19:51:34 -07:00
Max Brunsfeld
80b19cbb83 Construct entire parse table statically
This removes the need for the 'init_parse_table' function,
which was not really thread safe
2014-03-25 19:34:17 -07:00
Max Brunsfeld
25861b7f03 Remove reduction-specific collapse flags in favor of globally hidden symbols 2014-03-25 09:05:55 -07:00
Max Brunsfeld
2df56f01c8 Remove public hidden symbol function
Now, you can't a particular occurrence of a symbol
in a grammar. You can only hide a symbol globally
(right now, by beginning its name with an underscore).
2014-03-25 08:16:26 -07:00
Max Brunsfeld
42214ba0eb Add if statements to javascript grammar 2014-03-24 19:18:20 -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
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
Max Brunsfeld
c40411b4d1 Handle unexpected tokens properly
Also, add null and boolean values to json grammar
2014-03-22 15:46:58 -07:00
Max Brunsfeld
8e7f59db1c Allow room in parse table for error and EOF entries 2014-03-18 08:04:17 -07:00
Max Brunsfeld
67b33a615b Refactor generated parsers to used explicit table
This is slightly slower than encoding the parse table in
flow control, but allows the parser to inspect the parse
table more flexibly. This is needed for incremental parsing.
2014-03-17 18:43:17 -07:00
Max Brunsfeld
da992b77ff Rename 'parse_config' export -> 'parser' 2014-03-15 14:48:28 -07:00
Max Brunsfeld
0dc3a95d0c Refactor parser header
Make separate lexer, stack and parser structs.
2014-03-15 14:43:50 -07:00
Max Brunsfeld
c43ec90dad Fix missing auxiliary tokens in lex error state 2014-02-27 00:38:08 -08:00
Max Brunsfeld
926b4ef242 Clean up parser.h 2014-02-27 00:06:22 -08:00
Max Brunsfeld
0d4687bdad Make start and EOF symbols into builtin symbols 2014-02-26 23:18:49 -08:00
Max Brunsfeld
8b7ed13c8b Add more error recovery tests for JSON 2014-02-26 22:58:45 -08:00
Max Brunsfeld
63718d5bad Add basic support for error recovery 2014-02-26 19:03:43 -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
713b3899c5 Simplify logic for extracting tokens from grammar 2014-02-23 10:00:49 -08:00
Max Brunsfeld
688fe993cf Remove rules that don't need to be public from compiler.h 2014-02-20 23:05:32 -08:00