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
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
8e1b78ca8e
Remove trailing whitespace from generated c code
2014-03-29 19:00:31 -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
2226234924
Add error recovery to javascript if statements
2014-03-26 23:02:57 -07:00
Max Brunsfeld
6d84e71ceb
Clean up javascript language tests
2014-03-26 22:56:58 -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
09e28e7859
Collapse nodes with only one child and no additional text content
2014-03-26 00:10:59 -07:00
Max Brunsfeld
059f7ff9d5
Add else blocks to javascript grammar
2014-03-25 23:40:53 -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
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
3a7c4bb5b1
Store AST nodes' non-hidden children
2014-03-24 01:03:32 -07:00
Max Brunsfeld
95188d84b6
Make tree struct private
2014-03-24 00:34:13 -07:00
Max Brunsfeld
50a90e456b
Handle * quantifier in regex patterns
2014-03-22 20:08:11 -07:00
Max Brunsfeld
57ed6da225
Make explicit char * -> string conversion in test helper
...
The version of clang on travis-ci seems to not allow this
conversion to be made implicitly
2014-03-22 19:27:07 -07:00
Max Brunsfeld
13009e52a5
Clean
2014-03-22 15:59:21 -07:00
Max Brunsfeld
0d3fe99ef9
Fix regex in language test table reader
2014-03-22 15:56:02 -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
Karen Wang and Max Brunsfeld
f248ece3aa
Use table-driven tests for specific parsers
2014-03-22 15:19:13 -07:00
Max Brunsfeld
bdbe69258a
Fix bug in stack breakdown procedure
2014-03-21 12:46:23 -07:00
Max Brunsfeld
fbe8b0a905
Fix incremental parsing
...
Stop collapsing hidden symbols upon reducing them.
Sadly, this messes up the ability to re-use parse
trees. Instead, for now, hide these nodes when
stringifying parse trees
2014-03-19 19:27:31 -07:00
Max Brunsfeld
7e94a4f1b2
Start work on reading input incrementally
2014-03-18 13:23:21 -07:00
Max Brunsfeld
a3a7546450
In SpyReader, store entire strings read, not individual chunks
...
Makes assertions easier to write. We don't need to assert
that the strings were read chunk by chunk.
2014-03-18 13:23:00 -07:00
Max Brunsfeld
fbb9b24d7b
Refactor ts_tree_children
2014-03-18 12:47:26 -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
0d6435e24a
Pass edit information into parser function
2014-03-15 16:55:35 -07:00
Max Brunsfeld
464a0e8dad
Clean up parser header further
2014-03-15 15:15:59 -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
05a5f9c124
Add function for notifying documents of edits
2014-03-12 13:39:12 -07:00
Max Brunsfeld
dbaacee497
Fix integer type warnings in json parser spec
2014-03-12 08:18:20 -07:00
Max Brunsfeld
ff0c8a98b8
Consolidate reading of input chunks in parser
2014-03-11 12:43:13 -07:00
Max Brunsfeld
42e9a264f3
In parser, read chunked input correctly
2014-03-10 13:25:31 -07:00
Max Brunsfeld
a411e43484
Rename source files: .cpp -> .cc
2014-03-09 22:13:08 -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
72a0c0e09c
Keep track of AST node sizes and positions
2014-03-01 15:44:25 -08:00
Max Brunsfeld
5045d5cccc
Clean up tree spec
2014-03-01 15:09:41 -08:00
Max Brunsfeld
ded54a3a1a
Fix some memory management bugs with trees
2014-03-01 00:25:05 -08:00
Max Brunsfeld
21c0f51b84
Rename ts_document_{set_text,set_input_string}
...
Because next I'll add a more general 'set_input' method
2014-02-27 13:30:11 -08:00