Commit graph

305 commits

Author SHA1 Message Date
Max Brunsfeld
3b388d66cd Profile and optimize
- Eliminate unnecessary copies of grammar objects
- Do cheaper comparisons first in equality methods
2014-04-23 08:32:11 -07:00
Max Brunsfeld
68d44fd565 Intern symbols during grammar preparation 2014-04-22 23:38:26 -07:00
Max Brunsfeld
33d781f492 Refactor bookkeeping of token starts in lexical rules
- Move lex items and parse items into their own files
2014-04-17 13:33:34 -07:00
Max Brunsfeld
a12cd49585 Fix configure script 2014-04-16 21:00:27 -07:00
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
e23604ac52 Fix debugging macros in parser.h 2014-04-14 22:31:11 -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
02f3fe2b04 Link against libboost_regex correctly on travis 2014-04-11 18:33:53 -07:00
Max Brunsfeld
cad6122295 Use boost regex on travis ci 2014-04-10 13:17:45 -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
2ab9caa87c Remove stray include 2014-04-08 20:32:25 -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
610a8e4a29 Scratch one off the todo 2014-04-05 15:55:37 -07:00
Max Brunsfeld
be1c8e0f17 Add dynamic property access to javascript grammar 2014-04-05 15:55:20 -07:00
Max Brunsfeld
5320cad065 Trim trailing whitespace 2014-04-04 13:10:55 -07:00
Max Brunsfeld
2191a7d988 Add switch statements to javascript grammar 2014-04-04 13:10:33 -07:00
Max Brunsfeld
129d2b9314 Remove extra EOF actions in lexer 2014-04-04 08:44:35 -07:00
Max Brunsfeld
32e94081fa Backfill tests 2014-04-04 08:07:46 -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
618a138e67 Update todo 2014-03-29 19:15:20 -07:00
Max Brunsfeld
2cd595d81a Clean up helper functions in example grammars 2014-03-29 19:02:00 -07:00
Max Brunsfeld
8e1b78ca8e Remove trailing whitespace from generated c code 2014-03-29 19:00:31 -07:00
Max Brunsfeld
7c502e5b58 Fix ambiguity in golang grammar 2014-03-29 18:59:54 -07:00
Max Brunsfeld
99817a38c1 Improve trees generated by arithmetic grammar
This work should inform how to implement operator
precedence helper functions
2014-03-29 18:37:51 -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
324f55f1ce Add error recovery to for loops in javascript grammar 2014-03-28 13:11:12 -07:00
Max Brunsfeld
2e11f60710 Add for loops to javascript grammar 2014-03-28 12:59:47 -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
2226234924 Add error recovery to javascript if statements 2014-03-26 23:02:57 -07:00
Max Brunsfeld
6d84e71ceb Clean up javascript language tests 2014-03-26 22:56:58 -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