Commit graph

771 commits

Author SHA1 Message Date
Max Brunsfeld
e0c24e3be6 Remove old error recovery code 2016-03-02 20:58:39 -08:00
Max Brunsfeld
501e426d29 Add function exposing in-progress symbols for each state 2016-03-02 20:58:08 -08:00
Max Brunsfeld
c8d7c16f87 Use out-of-context states when in error parse state 2016-03-02 20:56:05 -08:00
Max Brunsfeld
ffcd8b5c49 Generate C code for the in-progress symbols in each parse state 2016-03-02 20:56:05 -08:00
Max Brunsfeld
00d953f507 Generate C code for out-of-context states 2016-03-02 20:56:05 -08:00
Max Brunsfeld
8c01b70ce7 Don't skip tokens that are not the start of any non-terminal 2016-03-02 20:56:05 -08:00
Max Brunsfeld
b4f2407a49 Add forward move states for each terminal symbol 2016-03-02 20:56:04 -08:00
Max Brunsfeld
dee1f697c1 Compute the set of variables that can begin with each terminal symbol 2016-02-25 21:51:52 -08:00
Max Brunsfeld
5a34d74702 Clean up stack 2016-02-25 21:51:39 -08:00
Max Brunsfeld
1850951b4f Escape special chars in production names for debug graphs 2016-02-24 17:24:11 -08:00
Max Brunsfeld
da2ef7ad35 Store trees in the links between stack nodes, not in the nodes themselves 2016-02-23 17:35:50 -08:00
Max Brunsfeld
abbc282950 Add a public function for printing debugging graphs 2016-02-23 11:16:50 -08:00
Max Brunsfeld
b36143d7a7 Add flag for logging dot graphs of the stack while parsing 2016-02-23 09:45:27 -08:00
Max Brunsfeld
867e1094c3 Fix sharing of lookahead token between parse stacks 2016-02-23 00:09:42 -08:00
Max Brunsfeld
6dd92c3abe Add function for rendering the stack as a DOT graph 2016-02-23 00:08:55 -08:00
Max Brunsfeld
f444a715fd Clean up tree array assertions in stack spec 2016-02-22 09:23:25 -08:00
Max Brunsfeld
b113dc8b0f Return a TreeArray from ts_stack_pop
Since the capacity is now included in the return value, the buffer
can be reused in the ts_parser__accept function. Also, it's just
cleaner to use Array consistently, rather than a separate buffer
and size.
2016-02-21 22:31:13 -08:00
Max Brunsfeld
2b35890bbb Add ts_node_symbols() function 2016-02-19 15:41:30 -08:00
Max Brunsfeld
df1d9b2416 Move sexp-generation code to node.c 2016-02-19 15:41:09 -08:00
Max Brunsfeld
3d7df851b5 Rename Vector -> Array 2016-02-17 20:41:29 -08:00
Max Brunsfeld
6fa7eca966 Make vector struct type-safe 2016-02-17 15:30:47 -08:00
Max Brunsfeld
3f08bfb264 Fix build warnings 2016-02-12 14:11:11 -08:00
Max Brunsfeld
e90a425618 Only return one result for each revealed head from ts_stack_pop 2016-02-08 12:08:15 -08:00
Max Brunsfeld
b80a330a74 Fix assorted memory leaks in test code 2016-02-05 12:23:54 -08:00
Max Brunsfeld
2f2ca401be Fix last few leaks, add leak checking to all randomized specs 2016-02-05 11:18:22 -08:00
Max Brunsfeld
f6f02182c1 Tail-call-optimize recursive functions
Refs https://github.com/maxbrunsfeld/node-tree-sitter-compiler/pull/7
2016-02-04 12:59:44 -08:00
Max Brunsfeld
c96c4a08e6 Use an object pool for stack nodes, to reduce allocations
Also, fix some leaks in the case where memory allocation failed during parsing
2016-02-04 11:19:42 -08:00
Max Brunsfeld
29c77c34ef Avoid leaking copy of potentially-extra token 2016-02-02 13:13:32 -08:00
Max Brunsfeld
1c9dff6dad Guard memcpy calls in ts_parser__accept 2016-02-02 12:22:29 -08:00
Max Brunsfeld
4a7312e514 Fix memory leaks when editing 2016-02-02 12:22:29 -08:00
Max Brunsfeld
7c44b0e387 Fix leaked lookahead trees in normal parsing 2016-01-29 17:31:43 -08:00
Max Brunsfeld
a74bf7ece1 Release tree when changing document's language 2016-01-29 17:25:07 -08:00
Max Brunsfeld
95828f42a8 Fix leak of StringInput wrapper struct 2016-01-29 16:40:38 -08:00
Max Brunsfeld
0cf59913ae Fix double retain of child trees 2016-01-28 23:15:22 -08:00
Max Brunsfeld
5f27550a7a Fix leaked nodes in stack 2016-01-28 21:18:57 -08:00
Max Brunsfeld
6401a065ae Use different types for advance and accept-token actions
Unlike with parse actions, lexical actions of different types never appear
in the same places in the table
2016-01-22 22:24:11 -07:00
Max Brunsfeld
1ec39abe6a clang-format 2016-01-22 22:10:18 -07:00
Max Brunsfeld
f0b1d851ce Fix uninitialized instance variable in ParseAction 2016-01-21 23:52:05 -07:00
Max Brunsfeld
e17ce2903e Clean up ts_parser__breakdown_stack 2016-01-21 14:07:38 -07:00
Max Brunsfeld
3dde0a6f39 Handle allocation failures during parsing 2016-01-19 18:08:01 -08:00
Max Brunsfeld
1543a6c7b0 Handle allocation failures when instantiating documents 2016-01-18 11:32:10 -08:00
Max Brunsfeld
9d0835edbf Return non-const string from ts_node_string
The caller should free the string.
2016-01-18 10:27:23 -08:00
Max Brunsfeld
87316f22f3 Wrap all calls to malloc and friends 2016-01-15 15:27:50 -08:00
Max Brunsfeld
19b776e74d Fix some errors caught by clang static analyzer 2016-01-15 13:33:05 -08:00
Max Brunsfeld
569b9d4099 Allow comments within grammar JSON 2016-01-14 11:28:13 -08:00
Max Brunsfeld
49f393b75e Merge pull request #22 from maxbrunsfeld/c-compiler-api
Simplify the compiler API
2016-01-13 21:08:41 -08:00
Max Brunsfeld
1142e05873 Copy lookahead state to the stack before pushing it to the vector
Valgrind caught this. If the vector needs to grow, the original pointer will
become invalid when the buffer is realloc'd
2016-01-13 13:49:32 -08:00
Max Brunsfeld
d4632ab9a9 Make the compile function plain C and take a JSON grammar 2016-01-11 12:33:48 -08:00
Max Brunsfeld
b69e19c525 Add plain C API for compiling a JSON grammar 2016-01-10 13:44:22 -08:00
Max Brunsfeld
36870bfced Make Grammar a simple struct 2016-01-08 15:51:30 -08:00