Max Brunsfeld
d32c8b7dd7
Use const references in a few more places
2014-04-16 18:30:21 -07:00
Max Brunsfeld
a437d39773
Add rule precedence construct
...
Still need to add some way of expressing left and right
associativity
2014-04-15 08:40:46 -07:00
Max Brunsfeld
67243c7e2f
cpplint
2014-04-14 08:38:44 -07:00
Max Brunsfeld
5145bba53d
Silence missing-initializer warnings for gcc
2014-04-12 20:16:16 -07:00
Max Brunsfeld
e1e0cc6278
Make sure conflicts returned by compile are unique
2014-04-10 08:38:14 -07:00
Max Brunsfeld
53285f7d0c
Give rule-specific names to repeat helper rules
2014-04-09 18:41:43 -07:00
Max Brunsfeld
a5816a9624
Refactor rule visitors
2014-04-09 13:28:02 -07:00
Max Brunsfeld
bd5ec68c96
Get generated parsers building under gcc
2014-04-08 22:11:20 -07:00
Max Brunsfeld
6a0a28f4b3
WIP - try to fix travis build
2014-04-08 21:41:38 -07:00
Max Brunsfeld
f71d7bae16
Record parse conflicts when compiling grammars
...
Need to remove duplicate conflicts
2014-04-08 18:47:42 -07:00
Max Brunsfeld
3982b73ed6
Start work on recording parse action conflicts
2014-04-08 08:19:55 -07:00
Max Brunsfeld
1da9f1fdfd
Store rule metadata as a map, not a single number
...
Need to store more than just boolean values
2014-04-07 08:50:00 -07:00
Max Brunsfeld
5320cad065
Trim trailing whitespace
2014-04-04 13:10:55 -07:00
Max Brunsfeld
129d2b9314
Remove extra EOF actions in lexer
2014-04-04 08:44:35 -07:00
Max Brunsfeld
5a00ebbc99
Clean up parse table builder
2014-04-03 20:36:06 -07:00
Max Brunsfeld
1cc7e32e2d
Fix handling of tokens consisting of separator characters
...
The parser is no longer hard-coded to skip whitespace. Tokens
such as newlines, whose characters overlap with the separator
characters, can now be correctly recognized.
2014-04-03 19:10:09 -07:00
Max Brunsfeld
f39cb1890d
Refactor rule visitor objects
2014-04-01 13:38:02 -07:00
Max Brunsfeld
85b97c4f87
Fix error in merging character set transitions
2014-04-01 13:33:32 -07:00
Max Brunsfeld
2a222adb7e
Represent character sets with unsigned chars
...
This is better for comparing character ranges, since
there is a definite maximum character value.
2014-03-31 18:47:18 -07:00
Max Brunsfeld
7824b3191b
Fix bug in character set difference calculation
2014-03-31 18:38:54 -07:00
Max Brunsfeld
a79a7435de
Remove remaining trailing whitespace from generated c code
2014-03-29 19:21:42 -07:00
Max Brunsfeld
8e1b78ca8e
Remove trailing whitespace from generated c code
2014-03-29 19:00:31 -07:00
Max Brunsfeld
7adb0bf34f
Add golang example grammar
...
Also, support '\a' character class shorthand in regexes,
for alphabetical characters
2014-03-29 16:29:34 -07:00
Max Brunsfeld
13c4e6e648
Tweak format for example grammars
2014-03-28 13:51:32 -07:00
Max Brunsfeld
5deeebc38c
Rename string_helpers file .cpp -> .cc
2014-03-27 19:58:57 -07:00
Max Brunsfeld
e1ac62edc5
Give better symbol names to generated tokens
...
This should make debugging easier
2014-03-27 12:54:54 -07:00
Max Brunsfeld
820b6f4020
Fix infinite loops during table generation for left-recursive rules
...
Add function calls for arbitrary expressions and dot property access to javascript grammar
2014-03-26 22:43:08 -07:00
Max Brunsfeld
3f770ff3c3
Remove unused consumed_symbols vector from parse items
2014-03-26 21:04:11 -07:00
Max Brunsfeld
d957021982
Removed unused constant in stack.c
2014-03-26 20:50:55 -07:00
Max Brunsfeld
05e16a8c46
Remove ordering of parse and lex items
...
Using an unordered_map and unordered_set to store these
speeds up grammar compilation significantly. The ordering
method on items was using the rules' .to_string method to
compute the order, which was not a meaningful comparison,
and was probably slow.
2014-03-26 13:13:22 -07:00
Max Brunsfeld
4454925b5a
Clean up parser macros more
2014-03-26 13:03:12 -07:00
Max Brunsfeld
09e28e7859
Collapse nodes with only one child and no additional text content
2014-03-26 00:10:59 -07:00
Max Brunsfeld
316adc7788
Represent tree symbols as unsigned integers
2014-03-25 23:47:25 -07:00
Max Brunsfeld
f601322956
Clean up macros in parser.h
2014-03-25 19:51:34 -07:00
Max Brunsfeld
80b19cbb83
Construct entire parse table statically
...
This removes the need for the 'init_parse_table' function,
which was not really thread safe
2014-03-25 19:34:17 -07:00
Max Brunsfeld
25861b7f03
Remove reduction-specific collapse flags in favor of globally hidden symbols
2014-03-25 09:05:55 -07:00
Max Brunsfeld
2df56f01c8
Remove public hidden symbol function
...
Now, you can't a particular occurrence of a symbol
in a grammar. You can only hide a symbol globally
(right now, by beginning its name with an underscore).
2014-03-25 08:16:26 -07:00
Max Brunsfeld
d7eca30e58
Fix travis-ci compile error in token extractor
2014-03-24 22:07:25 -07:00
Max Brunsfeld
aac0786449
Resolve token conflicts by tokens' order in grammar
2014-03-24 19:18:06 -07:00
Max Brunsfeld
2a5dd3434f
Fix bug in character set intersection calculation
2014-03-24 19:17:25 -07:00
Max Brunsfeld
9cb92a0a96
Remove code related to old error recovery function
2014-03-24 13:17:38 -07:00
Max Brunsfeld
48baf056b4
Store grammars' rules in vectors, not maps
...
This way, we can keep of the order in which the rules
were given, for resolving reduce/reduce conflicts.
2014-03-24 13:17:38 -07:00
Max Brunsfeld
671f1a1ddc
Start work on javascript grammar
2014-03-24 09:14:29 -07:00
Max Brunsfeld
3a7c4bb5b1
Store AST nodes' non-hidden children
2014-03-24 01:03:32 -07:00
Max Brunsfeld
95188d84b6
Make tree struct private
2014-03-24 00:34:13 -07:00
Max Brunsfeld
50a90e456b
Handle * quantifier in regex patterns
2014-03-22 20:08:11 -07:00
Max Brunsfeld
5869c1ea18
Clean up stack breakdown function
2014-03-21 13:02:25 -07:00
Max Brunsfeld
bdbe69258a
Fix bug in stack breakdown procedure
2014-03-21 12:46:23 -07:00
Max Brunsfeld
cbc66b359e
Cleanup
2014-03-19 23:10:28 -07:00
Max Brunsfeld
fbe8b0a905
Fix incremental parsing
...
Stop collapsing hidden symbols upon reducing them.
Sadly, this messes up the ability to re-use parse
trees. Instead, for now, hide these nodes when
stringifying parse trees
2014-03-19 19:27:31 -07:00