Max Brunsfeld
b998bb35af
Don't use initializer lists for tuples
...
gcc doesn't allow it.
2014-05-04 19:49:09 -07:00
Max Brunsfeld
b97e4f1de8
Clean up intern symbols function
2014-05-01 23:40:04 -07:00
Max Brunsfeld
3a50171249
Expose all grammar compilation errors
2014-05-01 23:28:40 -07:00
Max Brunsfeld
93620b3ed1
Add keyword helper for making higher-priority string tokens
2014-05-01 13:25:20 -07:00
Max Brunsfeld
a2c125998e
Add single quoted strings and regexes to javascript grammar
2014-05-01 12:43:53 -07:00
Max Brunsfeld
6d40dcf881
Add token helper for building token rules
...
Now you can specify the structure of tokens using
all of the rule functions, not just `str` and `pattern`
2014-05-01 12:43:29 -07:00
Max Brunsfeld
0d763d229d
cpplint
2014-04-28 21:46:43 -07:00
Max Brunsfeld
25eda9d889
ISymbol -> Symbol
...
Interned symbols are now the main type of symbol in use
2014-04-28 20:43:27 -07:00
Max Brunsfeld
faf80aadac
Symbol -> NamedSymbol
2014-04-28 20:15:49 -07:00
Max Brunsfeld
66c033e411
Optimize parse item equality
2014-04-28 18:31:03 -07:00
Max Brunsfeld
70ba76762c
Optimize item set transitions function further
2014-04-28 18:30:50 -07:00
Max Brunsfeld
ae2450d282
Fix dangling reference error on gcc
2014-04-28 13:06:16 -07:00
Max Brunsfeld
6ea4e6b2b0
Give rules::Visitor a virtual destructor
2014-04-27 23:19:11 -07:00
Max Brunsfeld
4dd1f9fbce
Cache state transition computations by grammar rule
...
This results in a huge speed increase
2014-04-27 23:03:37 -07:00
Max Brunsfeld
4eece88e18
Remove duplicate set insert
2014-04-27 22:08:40 -07:00
Max Brunsfeld
076a27be4a
Fix compile error on gcc
2014-04-27 22:08:01 -07:00
Max Brunsfeld
b2cb78166e
Give Rule a virtual destructor
...
Not needed at the moment because rule pointers are are always wrapped
in shared_ptrs. Still, don't want to forget this if I stopped using shared_ptrs
at some point.
2014-04-27 21:49:56 -07:00
Max Brunsfeld
b86203d205
Extract shared helper functions from example grammars
2014-04-27 21:45:05 -07:00
Max Brunsfeld
29bbff655c
Store choice rules using vectors, not pairs
2014-04-26 23:21:09 -07:00
Max Brunsfeld
c9e0d4bdf0
Optimize item set closure function
2014-04-26 19:06:34 -07:00
Max Brunsfeld
93df5579b4
Trim whitespace
2014-04-25 22:17:23 -07:00
Max Brunsfeld
c2abfd2d03
Parse '.' in regexes
2014-04-24 13:21:46 -07:00
Max Brunsfeld
7be8d469b8
Add ternary expressions to javascript grammar
2014-04-23 22:15:07 -07:00
Max Brunsfeld
5313bb5257
Simplify item set closure function
2014-04-23 13:35:21 -07:00
Max Brunsfeld
020614824a
Avoid unnecessary dynamic cast in symbol equality function
2014-04-23 13:12:39 -07:00
Max Brunsfeld
2b883a72a2
Further reduce allocations in rule transitions functions
2014-04-23 13:12:00 -07:00
Max Brunsfeld
e8f2b788d4
Reduce allocations when computing rule transitions
2014-04-23 09:01:57 -07:00
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
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