Max Brunsfeld
6cf267efaf
Clean up breakdown stack function
2014-09-03 22:35:52 -07:00
Max Brunsfeld
9c0b5b5571
clang-format
2014-09-03 18:53:38 -07:00
Max Brunsfeld
3dea1261a6
Clean up document specs for incremental parsing
2014-09-03 18:48:10 -07:00
Max Brunsfeld
c72445d808
Fix inc parsing for nodes containing ubiq tokens
2014-09-03 13:17:06 -07:00
Max Brunsfeld
ad52bdc448
Fix inc parsing when appending to end of a token
2014-09-03 07:09:15 -07:00
Max Brunsfeld
77529ace3d
Fix infinite loop in certain cases w/ unterminated tokens
2014-09-03 00:38:44 -07:00
Max Brunsfeld
7d81126df3
Remove unnecessary import of public header in specs
2014-09-02 22:17:04 -07:00
Max Brunsfeld
cc5f1471a8
Add debug lines for breaking down stack when re-parsing
2014-09-02 22:16:17 -07:00
Max Brunsfeld
66a50d4e4a
Add separate debug and release configurations in gyp files
...
Disable optimizations in debug mode. Use that for specs.
2014-09-02 22:13:53 -07:00
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
e941f8c175
Fix error in document editing
...
When breaking down the stack in parser.c, the previous code
would not account for ubiquitous tokens. This was a problem
for a long time, but wasn't noticed until ubiquitous tokens
started being used to represent separator characters
2014-09-01 21:32:29 -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
db295cebbc
Suppress unused variable warning in stack iteration macro
2014-09-01 14:16:27 -07:00
Max Brunsfeld
d38f095f01
Clean up Tree code
2014-09-01 14:08:07 -07:00
Max Brunsfeld
88d07c8960
Clean up parse table lookup function
2014-08-31 21:17:32 -07:00
Max Brunsfeld
2985a98150
Build error nodes in lexer again, not in parser
2014-08-31 16:59:01 -07:00
Max Brunsfeld
16d5cf1d04
Remove expected symbols from error nodes
2014-08-31 16:39:16 -07:00
Max Brunsfeld
25a254a732
Comment and format
2014-08-31 16:24:27 -07:00
Max Brunsfeld
85d8c9df5c
Handle multiple ubiquitous in a row
2014-08-31 12:11:16 -07:00
Max Brunsfeld
a75686b017
Fix double release calls in document spec
2014-08-31 00:46:09 -07:00
Max Brunsfeld
1cc64cd95a
Don't use eval in test scripts
2014-08-31 00:40:50 -07:00
Max Brunsfeld
e6bbab41e5
Realloc parse stack when it grows to its capacity
2014-08-30 21:39:55 -07:00
Max Brunsfeld
3ea9f709a4
Highlight test filenames when running valgrind
2014-08-30 21:39:03 -07:00
Max Brunsfeld
ccbf4fb5da
Make valgrind part of test scripts
2014-08-30 19:57:15 -07:00
Max Brunsfeld
c5ac02c571
Fix size calculation for error nodes
2014-08-29 13:22:03 -07:00
Max Brunsfeld
604b149c4b
Assign sizes to error nodes in handle_error
2014-08-28 18:35:30 -07:00
Max Brunsfeld
a72b79f7f3
Tweak formatting in node.c
2014-08-28 13:30:02 -07:00
Max Brunsfeld
3430a5edcc
Clarify distinction btwn tree padding, tree offset, node position
...
- Node position is public. It represents the node's first character
index in the document.
- Tree offset is private. It represents the distance between the tree's
first character index and it's parent's first character index.
- Tree padding is private. It represents the amount of whitespace
(or other separator characters) immediately preceding the tree.
2014-08-28 13:22:06 -07:00
Max Brunsfeld
226ffd6b5b
Fix initializer list deduction warnings in specs
2014-08-27 22:23:45 -07:00
Max Brunsfeld
0193be166b
Fix overridden initializer warning in tree constructor
2014-08-27 22:06:27 -07:00
Max Brunsfeld
9db291fe88
Fix missing initializer warning in document constructor
2014-08-27 21:45:46 -07:00
Max Brunsfeld
0414451d79
Fix missing comma between CC flags in tests gyp file
2014-08-27 21:34:42 -07:00
Max Brunsfeld
b91f48ced2
Call handle_error even when error occurs exactly where expected
...
Previously, if an error happened right at the beginning of an error
production, the error node would be immediately shifted onto the stack
without calling the error handling function.
2014-08-27 18:44:27 -07:00
Max Brunsfeld
e0a53b9f14
Make parse and lex debug output more readable
2014-08-27 18:27:53 -07:00
Max Brunsfeld
7b0a52ec26
Pretty-print single hidden tree nodes correctly
2014-08-27 12:56:36 -07:00
Max Brunsfeld
bd145d2c6a
Preserve the initial error node in handle_error function
2014-08-26 23:22:18 -07:00
Max Brunsfeld
b71d0f7f9d
Remove untested, unused error handling for reduce_extra action
2014-08-26 22:22:09 -07:00
Max Brunsfeld
37d5db6fee
Move newline in lexer debugging output
2014-08-26 22:21:21 -07:00
Max Brunsfeld
346cf4fe5d
Remove LEX_PANIC macro
2014-08-26 13:12:12 -07:00
Max Brunsfeld
0470b34f2f
Clean up build_error_node function
2014-08-26 08:40:21 -07:00
Max Brunsfeld
77941c85ff
Avoid building incomplete error nodes during lexing
...
The lexer doesn't know the expected symbols, so it doesn't have enough
information to construct error nodes. Now, when it encounters an invalid
character, it returns NULL and the parser builds a correct error node.
2014-08-25 23:35:00 -07:00
Max Brunsfeld
c04474acf6
Format comments consistently in parser.c
2014-08-25 23:02:43 -07:00
Max Brunsfeld
826d4dfa23
Clean up handle_error function
2014-08-25 23:00:24 -07:00
Max Brunsfeld
2318691e28
Move newline in debugging output
2014-08-25 21:23:29 -07:00
Max Brunsfeld
117869e49a
Fix position calculation in node_find_for_range
2014-08-25 15:52:17 -07:00
Max Brunsfeld
1535ebd21c
Handle null parent in {next,prev}_sibling
2014-08-25 11:28:09 -07:00
Max Brunsfeld
cef6827182
Add find_for_range function for Nodes
2014-08-25 09:31:27 -07:00
Max Brunsfeld
b1a7886225
Rename node_leaf_at_pos -> node_find_pos
...
It doesn't always return a leaf node, just the smallest node
that spans the given position.
2014-08-25 09:06:51 -07:00
Max Brunsfeld
8f4939a3d3
unsigned char -> uint32_t in CharacterRange
2014-08-24 01:05:59 -07:00
Max Brunsfeld
9338249075
Remove implicit CharacterRange constructors
...
Also fix misc smaller lint errors
2014-08-23 14:52:44 -07:00