Max Brunsfeld
db9966b57c
Simplify lex item set transitions code
2015-10-11 22:51:37 -07:00
Max Brunsfeld
25791085c3
Normalize lexical grammar rules before constructing lex table
2015-10-11 16:56:00 -07:00
Max Brunsfeld
3ee58461d7
Clean up main parser loop
2015-10-07 13:05:36 -07:00
Max Brunsfeld
5febda183a
Remove completed todo items
2015-10-06 16:40:37 -07:00
Max Brunsfeld
8ef25ffef3
Try lexing using each parse stack head's state
...
This fixes the case where the parse stack is split and the top states
have different valid lookahead symbols
2015-10-06 16:22:58 -07:00
Max Brunsfeld
85466a5b22
Clean up and document ts_parser__next function
2015-10-06 11:43:34 -07:00
Max Brunsfeld
624e4651d2
Use GLR for for-in loop conlfict in javascript grammar
2015-10-06 10:50:56 -07:00
Max Brunsfeld
03e7fc49fd
Fix bug in parse stack splitting logic for GLR
2015-10-06 10:50:51 -07:00
Max Brunsfeld
aaafdd4797
Add stream operator for PrecedenceRange in spec helpers
2015-10-06 10:50:09 -07:00
Max Brunsfeld
5455fb977f
Use PrecedenceRange in build_lex_table
2015-10-05 18:02:59 -07:00
Max Brunsfeld
11a1ea8dfe
Reuse separator-rule in LexTableBuilder
2015-10-05 17:02:59 -07:00
Max Brunsfeld
5e4bdcbaf8
Simplify handling of precedence & associativity in productions
2015-10-05 16:56:11 -07:00
Max Brunsfeld
6d748a6714
Store parse actions' precedences as ranges, not sets
2015-10-05 16:05:19 -07:00
Max Brunsfeld
ef2acf9496
Make ParseItemSet & LexItemSet classes
2015-10-05 15:13:43 -07:00
Max Brunsfeld
f01972c64e
Reorganize ParseItemSet and LexItemSet
2015-10-05 15:09:06 -07:00
Max Brunsfeld
39a0934088
Remove now-unused symbol rule-transition functions
2015-10-04 22:20:34 -07:00
Max Brunsfeld
c4ef228397
Share common lookahead sets between parse item sets
2015-10-04 21:33:54 -07:00
Max Brunsfeld
a0bf3d0bd8
Compute closures of item sets lazily
2015-10-04 00:21:29 -07:00
Max Brunsfeld
ebc52f109d
Merge branch 'flatten-rules-into-productions'
...
This branch had diverged considerably, so merging it required changing a lot
of code.
Conflicts:
project.gyp
spec/compiler/build_tables/action_takes_precedence_spec.cc
spec/compiler/build_tables/build_conflict_spec.cc
spec/compiler/build_tables/build_parse_table_spec.cc
spec/compiler/build_tables/first_symbols_spec.cc
spec/compiler/build_tables/item_set_closure_spec.cc
spec/compiler/build_tables/item_set_transitions_spec.cc
spec/compiler/build_tables/rule_can_be_blank_spec.cc
spec/compiler/helpers/containers.h
spec/compiler/prepare_grammar/expand_repeats_spec.cc
spec/compiler/prepare_grammar/extract_tokens_spec.cc
src/compiler/build_tables/action_takes_precedence.h
src/compiler/build_tables/build_parse_table.cc
src/compiler/build_tables/first_symbols.cc
src/compiler/build_tables/first_symbols.h
src/compiler/build_tables/item_set_closure.cc
src/compiler/build_tables/item_set_transitions.cc
src/compiler/build_tables/parse_item.cc
src/compiler/build_tables/parse_item.h
src/compiler/build_tables/rule_can_be_blank.cc
src/compiler/build_tables/rule_can_be_blank.h
src/compiler/prepare_grammar/expand_repeats.cc
src/compiler/prepare_grammar/extract_tokens.cc
src/compiler/prepare_grammar/extract_tokens.h
src/compiler/prepare_grammar/prepare_grammar.cc
src/compiler/rules/built_in_symbols.cc
src/compiler/rules/built_in_symbols.h
src/compiler/syntax_grammar.cc
src/compiler/syntax_grammar.h
2015-10-02 23:46:39 -07:00
Max Brunsfeld
dda3939adf
Fix typo in javascript corpus
2015-09-22 22:39:41 -07:00
Max Brunsfeld
90862dd18f
Add some edit sequences to corpus tests
2015-09-22 21:19:19 -07:00
Max Brunsfeld
d032114d7a
js grammar - recover from errors on semicolons but not line-breaks
2015-09-22 21:12:28 -07:00
Max Brunsfeld
e7838d520a
Remove invalid assertion in ts_tree_edit
2015-09-22 21:02:25 -07:00
Max Brunsfeld
32536665f9
Remove weak build_parse_table spec
...
This is best covered by integration tests
2015-09-22 20:03:00 -07:00
Max Brunsfeld
aba8af9e5b
Cleanup debug logging in parser
2015-09-22 19:35:13 -07:00
Max Brunsfeld
7be067a2e9
Guard for null tree in ts_document_edit
2015-09-20 13:39:18 -07:00
Max Brunsfeld
b7b082d9b1
extract helper fn for testing edit sequences against the corpus
2015-09-20 13:38:46 -07:00
Max Brunsfeld
010a606b76
Add undo method to SpyInput
2015-09-19 14:46:14 -07:00
Max Brunsfeld
511e52ab55
Clean up SpyInput test helper
2015-09-19 13:29:30 -07:00
Max Brunsfeld
673ca411b1
Fix lint errors
2015-09-19 13:19:49 -07:00
Max Brunsfeld
cdadee4610
Clean up language specs file
2015-09-18 23:42:20 -07:00
Max Brunsfeld
f37f73f92f
Add ability to edit multiple times between parses
2015-09-18 23:20:06 -07:00
Max Brunsfeld
6254f45c1b
Rename ParseStack -> Stack
2015-09-18 22:02:06 -07:00
Max Brunsfeld
b3d883e128
Store edits in trees, not by splitting stack
...
This allows for multiple edits per parse, though it is not exposed through
the API yet
2015-09-18 22:02:06 -07:00
Max Brunsfeld
0467d190fe
Add ts_tree_edit function
2015-09-18 22:02:06 -07:00
Max Brunsfeld
296d8cc1e8
clang-format
2015-09-13 19:41:11 -07:00
Max Brunsfeld
c09947146a
Remove not-necessarily-valid assertion
2015-09-10 16:26:23 -07:00
Max Brunsfeld
66ad271c82
Add Document parse_count() method, for tracking if trees are still valid
2015-09-10 14:23:42 -07:00
Max Brunsfeld
2869458ce9
Update todo
2015-09-10 11:50:51 -07:00
Max Brunsfeld
736c78b095
Update readme
2015-09-10 11:43:55 -07:00
Max Brunsfeld
e6f3239bef
Move stream operator definitions to spec helpers
...
This is one less thing for users to worry about when compiling and linking
the library itself
2015-09-10 10:12:11 -07:00
Max Brunsfeld
f5f24a708e
Remove unnecessary named TSTreeOptions struct
2015-09-09 13:00:07 -07:00
Max Brunsfeld
a2d817f0f0
Remove unnecessary include from runtime spec-helper
2015-09-09 12:59:27 -07:00
Max Brunsfeld
fe3be2aa53
Optimize Node parent() method
2015-09-09 12:43:35 -07:00
Max Brunsfeld
67241e3052
Don't use std::set in public compiler header
...
Just use vectors
2015-09-08 23:43:45 -07:00
Max Brunsfeld
252fa7b631
Add Document getter methods for input, language
2015-09-08 23:33:43 -07:00
Max Brunsfeld
ebd60213d9
Drop release functions from callback structs
...
The caller can just as easily take care of the cleanup explicitly
2015-09-08 23:24:33 -07:00
Max Brunsfeld
7ee5eaa16a
Rename node accessor methods
...
Instead of child() vs concrete_child(), next_sibling() vs next_concrete_sibling(), etc,
the default is switched: child() refers to the concrete syntax tree, and named_child()
refers to the AST. Because the AST is abstract through exclusion of some nodes, the
names are clearer if the qualifier goes on the AST operations
2015-09-08 23:16:24 -07:00
Max Brunsfeld
245daffbc4
Add {next,prev}_concrete_sibling Node methods
2015-09-08 21:43:37 -07:00
Max Brunsfeld
c3f3f19ea8
Add concrete_child and concrete_child_count Node methods
2015-09-08 09:53:26 -07:00