Max Brunsfeld
048a479b5f
Fix missing initializer warning in gcc
2014-07-29 13:04:19 -07:00
Max Brunsfeld
6a8addb84f
Fix segfault when grammar consists of a single token
2014-07-23 18:26:10 -07:00
Max Brunsfeld
98cc2f2264
Auto-format all source code with clang-format
2014-07-21 13:20:00 -07:00
Max Brunsfeld
6951acb13b
Fix error when grammar contains to error productions
2014-07-13 21:26:21 -07:00
Max Brunsfeld
4d14a65e22
In build_parse_table, switch recursion to explicit iteration
2014-07-13 18:06:37 -07:00
Max Brunsfeld
b217cd38fb
Handle built-in symbols correctly in conflict manager
2014-07-13 17:59:57 -07:00
Max Brunsfeld
44c4bf5f5e
Refactor add_ubiquitous_token_actions method
2014-07-11 13:21:44 -07:00
Max Brunsfeld
f4287c07d0
Fix ParseStateId / size_t confusion in parse table
2014-07-07 13:21:30 -07:00
Max Brunsfeld
77df7fe511
In lexer, always prefer the longest match
...
Only use rules' precedence to decide between two tokens
that match the same string
2014-07-03 08:57:35 -07:00
Max Brunsfeld
67590eddc7
Fix stream operator for new parse action types
2014-07-03 08:15:36 -07:00
Max Brunsfeld
18ae326459
Fix lint errors
2014-07-02 09:01:38 -07:00
Max Brunsfeld
6424eea62a
Refactor handling of ubiquitous tokens when building parse table
2014-07-01 21:43:26 -07:00
Max Brunsfeld
83a1b9439e
Fix handling of ubiquitous tokens used in grammar rules
2014-07-01 20:47:35 -07:00
Max Brunsfeld
7a6d3365c5
Remove helper function in rule_transitions.cc
2014-06-28 18:09:32 -07:00
Max Brunsfeld
3be648593e
merge_{sym,char}_transitions -> merge_{sym,char}_transition
2014-06-28 17:02:48 -07:00
Max Brunsfeld
9bad5dff3e
Avoid unnecessary std::map construction when merging transition sets
2014-06-26 13:42:42 -07:00
Max Brunsfeld
9686c57e90
Allow ubiquitous tokens to also be used in grammar rules
2014-06-26 08:52:42 -07:00
Max Brunsfeld
a9dff20658
Make grammars' separator characters configurable
2014-06-26 07:31:08 -07:00
Max Brunsfeld
7df35f9b8d
Make separate types for syntax and lexical grammars
...
This way, the separator characters can be added as a field to
lexical grammars only
2014-06-25 13:27:16 -07:00
Max Brunsfeld
240de1ca61
Reorder methods in c code generator
2014-06-18 08:21:43 -07:00
Max Brunsfeld
2c382b7363
Trim trailing whitespace
2014-06-16 21:33:35 -07:00
Max Brunsfeld
c312f985c8
Refactor c code generator
...
It's been rewritten in a less functional style. String copies were actually
taking significant time for large parsers.
2014-06-16 21:29:04 -07:00
Max Brunsfeld
1daaf4485f
Refactor item set transition functions
2014-06-16 13:37:34 -07:00
Max Brunsfeld
17040e32ec
Remove unused version of first_set function
2014-06-16 13:25:30 -07:00
Max Brunsfeld
39c1ab2d50
Refactor item_set_closure
...
Inline unnecessary function
2014-06-16 13:20:39 -07:00
Max Brunsfeld
7a2c2c1c90
Store ParseItemSets as maps, w/ core items as keys
...
ParseItem no longer has a lookahead_sym field; it now represents
the 'core' of a parse item. The lookahead context is stored separately,
as a set per core item. This makes iterating, copying and merging item
sets more efficient, because before, the core items were repeated for each
different lookahead symbol.
Also, the memoization in sym_transitions(ParseItemSet) has been removed.
Maybe I'll add it back later.
2014-06-16 08:35:20 -07:00
Max Brunsfeld
d203c15911
Remove unneeded blank rule in lex table builder
2014-06-11 17:43:07 -07:00
Max Brunsfeld
bb4d83ce47
Add regex postfix flags to javascript grammar
...
- Refactor statement terminators in javascript grammar
- Reorganize javascript language tests
2014-06-11 16:43:27 -07:00
Max Brunsfeld
3cd031af38
Add keypattern rule helper
...
This way, pattern rules (e.g. golang's comment) can be easily given the
same precedence as keyword rules.
2014-06-11 12:40:49 -07:00
Max Brunsfeld
174f306e2a
Fix precedence of comments vs '/' operator
2014-06-11 12:27:58 -07:00
Max Brunsfeld
a42f498c59
Optimize merge_sym_transitions and merge_char_transitions
2014-06-10 14:01:32 -07:00
Max Brunsfeld
123d3b26d8
Add more expressions, statements to golang grammar
2014-06-10 11:33:05 -07:00
Max Brunsfeld
e105f5cebc
Remove inheritance link btwn PreparedGrammar and Grammar
2014-06-10 10:34:37 -07:00
Max Brunsfeld
11acc7d087
Fix missing initializer warnings
2014-06-09 21:47:57 -07:00
Max Brunsfeld
21c259df9c
Clean up lint errors
2014-06-09 21:14:38 -07:00
Max Brunsfeld
54a555168d
Add accessor methods on Grammar
2014-06-09 21:05:25 -07:00
Max Brunsfeld
e93e254518
In lexer, prefer tokens to skipped separator characters
...
This was causing newlines in go and javascript to be parsed as
meaningless separator characters instead of statement terminators
2014-05-30 13:29:54 -07:00
Max Brunsfeld
220e081c49
Remove unnecessary methods on LexTable
2014-05-29 18:28:23 -07:00
Max Brunsfeld
c30055ba18
Fix symbol names for extracted tokens
2014-05-20 08:30:58 -07:00
Max Brunsfeld
649f200831
Expand regex/string rules as part of grammar preparation
...
This makes it possible to report errors in regex parsing
2014-05-19 20:54:59 -07:00
Max Brunsfeld
5245bc01fe
Backfill tests for token extraction in auxiliary rules
2014-05-19 19:05:54 -07:00
Max Brunsfeld
608b5ce02b
Cleanup - extract method in parse table builder
2014-05-12 08:53:28 -07:00
Max Brunsfeld
10d3801d7e
Fix missing symbol names for keywords
2014-05-09 16:14:48 -07:00
Max Brunsfeld
3e0debf814
Fix compile error on gcc
2014-05-09 15:37:30 -07:00
Max Brunsfeld
34137be12d
Represent state ids as unsigned shorts
...
This fixes some signedness conversion warnings
2014-05-08 13:23:46 -07:00
Max Brunsfeld
0a21eee3f0
Remove magic number from generated symbols enums
...
The symbol numbers 0 and 1 are reserved for 'error' and 'eof',
so the grammar's start symbol is always 2.
2014-05-08 13:14:45 -07:00
Max Brunsfeld
4700e33746
Introduce 'ubiquitous_tokens' concept, for parsing comments and such
2014-05-06 12:54:04 -07:00
Max Brunsfeld
b010e1667e
Fix parse action equality method
2014-05-06 12:51:38 -07:00
Max Brunsfeld
63c0e27501
Clean up table builder functions
2014-05-04 23:04:34 -07:00
Max Brunsfeld
1d314d71c2
Separate functions for building parse and lex tables
...
Now, instead of adding states to the lex table as they are needed
by the parse states, we iterate over the parse states after the fact
and set up their corresponding lex states. This has the nice side
effect that the lex states are in a more readable order.
2014-05-04 22:07:52 -07:00