Max Brunsfeld
545e575508
Revert "Remove the separator characters construct"
...
This reverts commit 5cd07648fd .
The separators construct is useful as an optimization. It turns out that
constructing a node for every chunk of whitespace in a document causes a
significant performance regression.
Conflicts:
src/compiler/build_tables/build_lex_table.cc
src/compiler/grammar.cc
src/runtime/parser.c
2014-09-02 08:03:51 -07:00
Max Brunsfeld
5cd07648fd
Remove the separator characters construct
...
Now, grammars can handle whitespace by making it another ubiquitous
token, like comments.
For now, this has the side effect of whitespace being included in the
tree that precedes it. This was already an issue for other ubiquitous
tokens though, so it needs to be fixed anyway.
2014-09-01 20:19:43 -07:00
Max Brunsfeld
98cc2f2264
Auto-format all source code with clang-format
2014-07-21 13:20:00 -07:00
Max Brunsfeld
1c7d2d2d03
Add for-in loops and math assignment operators to js grammar
2014-07-07 13:35:55 -07:00
Max Brunsfeld
c85841364e
Add throw statements to js grammar
2014-07-03 08:20:43 -07:00
Max Brunsfeld
9686c57e90
Allow ubiquitous tokens to also be used in grammar rules
2014-06-26 08:52:42 -07:00
Max Brunsfeld
7df35f9b8d
Make separate types for syntax and lexical grammars
...
This way, the separator characters can be added as a field to
lexical grammars only
2014-06-25 13:27:16 -07:00
Max Brunsfeld
bb4d83ce47
Add regex postfix flags to javascript grammar
...
- Refactor statement terminators in javascript grammar
- Reorganize javascript language tests
2014-06-11 16:43:27 -07:00
Max Brunsfeld
082560dd6e
Fix operator precedence of '.' operator in js grammar
2014-06-11 14:01:38 -07:00
Max Brunsfeld
4ad6278334
Add finally, instance of, typeof, in to js grammar
2014-06-11 11:49:06 -07:00
Max Brunsfeld
54a555168d
Add accessor methods on Grammar
2014-06-09 21:05:25 -07:00
Max Brunsfeld
844f73c193
Remove unnecessary comment rule from JS grammar
2014-05-26 21:48:35 -07:00
Max Brunsfeld
2d0f90c7d5
Add try and while statements to js grammar
2014-05-09 21:36:18 -07:00
Max Brunsfeld
4700e33746
Introduce 'ubiquitous_tokens' concept, for parsing comments and such
2014-05-06 12:54:04 -07:00
Max Brunsfeld
bae32adc7b
Add constructor calls, pre/postfix operators to js grammar
2014-05-04 13:36:19 -07:00
Max Brunsfeld
1bdd87535a
Add prefix math operators +, - to javascript grammar
2014-05-02 07:42:13 -07:00
Max Brunsfeld
b9393b5c1a
Refactor grammar helper functions
2014-05-01 20:02:06 -07:00
Max Brunsfeld
2906125824
Refactor javascript grammar to use new keyword helper
2014-05-01 13:25:50 -07:00
Max Brunsfeld
60e2728acc
Refactor string and regex specification in javascript grammar
2014-05-01 12:48:01 -07:00
Max Brunsfeld
a2c125998e
Add single quoted strings and regexes to javascript grammar
2014-05-01 12:43:53 -07:00
Max Brunsfeld
b86203d205
Extract shared helper functions from example grammars
2014-04-27 21:45:05 -07:00
Max Brunsfeld
801f4bd0a8
Add returns, deletes and bool operators to js grammar
2014-04-25 22:08:11 -07:00
Max Brunsfeld
61692c8bb1
Add error recovery in function calls to javascript gramamr
2014-04-24 13:22:54 -07:00
Max Brunsfeld
68c26a06b1
Add comments to javascript grammar
2014-04-24 13:22:23 -07:00
Max Brunsfeld
c2abfd2d03
Parse '.' in regexes
2014-04-24 13:21:46 -07:00
Max Brunsfeld
52c338ed60
Add some infix math operators to javascript grammar
2014-04-23 22:25:48 -07:00
Max Brunsfeld
7be8d469b8
Add ternary expressions to javascript grammar
2014-04-23 22:15:07 -07:00
Max Brunsfeld
be1c8e0f17
Add dynamic property access to javascript grammar
2014-04-05 15:55:20 -07:00
Max Brunsfeld
2191a7d988
Add switch statements to javascript grammar
2014-04-04 13:10:33 -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
2cd595d81a
Clean up helper functions in example grammars
2014-03-29 19:02:00 -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
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
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
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