Commit graph

177 commits

Author SHA1 Message Date
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
Max Brunsfeld
c43ec90dad Fix missing auxiliary tokens in lex error state 2014-02-27 00:38:08 -08:00
Max Brunsfeld
8b7ed13c8b Add more error recovery tests for JSON 2014-02-26 22:58:45 -08:00
Max Brunsfeld
8deeff392b Fix memory leak in tree 2014-02-26 19:54:22 -08:00
Max Brunsfeld
63718d5bad Add basic support for error recovery 2014-02-26 19:03:43 -08:00
Max Brunsfeld
df223d566e Fix bug in parser error handling 2014-02-25 18:33:24 -08:00