Commit graph

873 commits

Author SHA1 Message Date
Max Brunsfeld
c28db44cd9 🎨 2015-11-20 13:10:11 -08:00
Max Brunsfeld
32b1088823 Rename HeadState -> LookaheadState, remove parser.lookahead field 2015-11-20 12:55:01 -08:00
Max Brunsfeld
467930a785 Move some ts_language functions to the right file 2015-11-20 12:00:49 -08:00
Max Brunsfeld
5c95d02bd0 Move ts_tree_compare to the right file 2015-11-20 11:53:03 -08:00
Max Brunsfeld
7aba2a0716 Rename DEBUG macro to LOG
DEBUG is already used as the symbol to enable/disable assert() calls
2015-11-20 11:50:50 -08:00
Max Brunsfeld
8d1b9501ab Fix integer comparison warnings 2015-11-20 11:47:39 -08:00
Max Brunsfeld
16692be210 Merge pull request #8 from maxbrunsfeld/glr-with-differing-lex-states
Handle ambiguities where each interpretation expects different lexical tokens
2015-11-20 00:18:08 -08:00
Max Brunsfeld
ee66f1e774 Make vector.h compile when included by C++, w/o clang extensions 2015-11-20 00:11:17 -08:00
Max Brunsfeld
c88e9044d5 Make stack popping more robust 2015-11-20 00:04:21 -08:00
Max Brunsfeld
64874449e4 Allow different parse stack heads to lex differently 2015-11-19 20:55:18 -08:00
Max Brunsfeld
484721b0c2 Assign tree parent pointers after parse is complete 2015-11-15 12:21:16 -08:00
Max Brunsfeld
ab34cfecd9 Replace TreeVector with a more generic Vector struct 2015-11-15 09:55:36 -08:00
Max Brunsfeld
0824d3e1f3 Only use first parse stack path during error recovery 2015-11-14 12:37:21 -08:00
Max Brunsfeld
a8817d38b2 Add link to other Wagner & Graham paper to README 2015-11-11 19:49:17 -08:00
Max Brunsfeld
46e99d3e42 Retrieve the shift action correctly when reducing and recovering 2015-11-11 17:53:45 -08:00
Max Brunsfeld
483577f00d Fix error when merging nodes at the base of the parse stack 2015-11-11 17:31:40 -08:00
Max Brunsfeld
40a90b551a Allow error recovery to look all the way to the bottom of the stack
Previously, there was a bug where the first node on the stack
would never be popped
2015-11-11 16:59:41 -08:00
Max Brunsfeld
1a5d5b3156 Make ambiguities resolve deterministically
In the future, they should resolve according to some kind of dynamic
precedence annotations provided in the grammars. For now, this at least makes
them fully deterministic, so that tests won't fail due to ambiguities resolving
differently after undone edits.
2015-11-11 16:54:03 -08:00
Max Brunsfeld
c7db4ec9f3 Don't count generated parsers in github language stats 2015-11-10 16:56:53 -08:00
Max Brunsfeld
d6f87fbb6b Merge pull request #7 from maxbrunsfeld/more-string-escaping
Escape backslashes and quotes in symbol name strings
2015-11-09 09:36:53 -08:00
Max Brunsfeld
e11515fb74 Escape backslashes and quotes in symbol name strings 2015-11-09 09:33:24 -08:00
Max Brunsfeld
84f939ab4d Merge pull request #6 from maxbrunsfeld/mb-fix-token-precedence-bug
Fix handling of changing precedence within lexical rules.
2015-11-08 13:50:24 -08:00
Max Brunsfeld
d5ce268074 Fix handling of changing precedence within lexical rules.
A precedence annotation wrapping a sequence of characters now only affects how
tightly those characters bind to *each other*, not how tightly they bind to the
preceding character.

This bug surfaced because a generated lexer was failing to recognize a '\n' character
as a token, instead treating it as ubiquitous whitespace. It made this error
because, even though anonymous ubiquitous tokens have the lowest precedence, the
character immediately *after* the '\n' was part of a normal token, which had
*normal* precedence (0). Advancing into that following token was incorrectly
prioritized above accepting the line-break token.
2015-11-08 13:36:15 -08:00
Max Brunsfeld
30b6530fd1 Account for parse stack merges when shifting
Previously, when the parse stack was split into 3 or more heads, it was
possible for head 3 to be accidentally skipped if head 2 merged with head 1.
2015-11-05 21:21:18 -08:00
Max Brunsfeld
a0eca388e8 Make fixture C grammar a subset of tree-sitter-c 2015-11-05 21:19:22 -08:00
Max Brunsfeld
4ab4fd7346 Merge pull request #4 from maxbrunsfeld/mb-precedence-handling-within-tokens
Make precedence more useful within tokens
2015-11-01 21:50:53 -08:00
Max Brunsfeld
7415c623aa clang-format 2015-11-01 21:21:07 -08:00
Max Brunsfeld
5073af0d03 Extract helper method for precedence in lex_item_transitions 2015-11-01 21:20:59 -08:00
Max Brunsfeld
d7cb48aae7 Fix handling of precedence for repeat rules 2015-11-01 21:00:44 -08:00
Max Brunsfeld
d6ee28abd0 Make precedence more useful within tokens
Choose accept-token actions over advance actions if their rule has a higher precedence.
2015-11-01 12:48:27 -08:00
Max Brunsfeld
998ae533da Make completion_status() a method on LexItem 2015-10-30 16:48:37 -07:00
Max Brunsfeld
c8be143f65 🔥 get_metadata function 2015-10-30 16:22:25 -07:00
Max Brunsfeld
73b3280fbb Include precedence calculation in LexItemSet::transitions 2015-10-30 16:07:29 -07:00
Max Brunsfeld
e9be0ff24e Make completion_status() a method on ParseItem 2015-10-30 14:07:33 -07:00
Max Brunsfeld
4850384b78 Include precedence calculation in ParseItemSet::transitions 2015-10-30 13:54:11 -07:00
Max Brunsfeld
433f060a5b Fix stream overloads for inspecting PrecedenceRange and ParseItem 2015-10-30 10:45:46 -07:00
Max Brunsfeld
58b5a10607 Fix ParseItemSet::transitions spec description 2015-10-29 12:19:44 -07:00
Max Brunsfeld
a26d7849ce Merge pull request #2 from robrix/get-symbol-names-from-documents
Get symbol names from documents
2015-10-29 10:51:13 -07:00
Rob Rix
f86789126d Include the correct file. 2015-10-29 13:26:12 -04:00
Rob Rix
007f519028 Name the parameter. 2015-10-29 12:47:04 -04:00
Rob Rix
d5f6581531 Add the runtime file to the project. 2015-10-29 12:46:51 -04:00
Rob Rix
04f3bf0b32 Implement ts_language_symbol_count. 2015-10-29 12:45:28 -04:00
Rob Rix
3da510d53b Add a prototype for the symbol count. 2015-10-29 12:44:28 -04:00
Rob Rix
ecf79564f0 Implement symbol name retrieval on TSLanguage. 2015-10-29 12:42:52 -04:00
Rob Rix
a176baa26f Pass a language, rather than a document. 2015-10-29 12:41:21 -04:00
Rob Rix
09162d1981 Export the symbol over ts_language_…. 2015-10-29 12:40:01 -04:00
Max Brunsfeld
a8ead10d6f In lex error state, don't look for tokens that would match *any* line 2015-10-28 17:45:17 -07:00
Rob Rix
8143224098 Implement ts_document_symbol_name. 2015-10-28 17:13:31 -04:00
Rob Rix
63f1a618b4 Add a prototype for getting the name for a symbol from a document. 2015-10-28 17:12:43 -04:00
Max Brunsfeld
dba0726eef clang format 2015-10-28 12:10:58 -07:00