Max Brunsfeld
4454925b5a
Clean up parser macros more
2014-03-26 13:03:12 -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
50a90e456b
Handle * quantifier in regex patterns
2014-03-22 20:08:11 -07:00
Max Brunsfeld
bdbe69258a
Fix bug in stack breakdown procedure
2014-03-21 12:46:23 -07:00
Max Brunsfeld
8e7f59db1c
Allow room in parse table for error and EOF entries
2014-03-18 08:04:17 -07:00
Max Brunsfeld
67b33a615b
Refactor generated parsers to used explicit table
...
This is slightly slower than encoding the parse table in
flow control, but allows the parser to inspect the parse
table more flexibly. This is needed for incremental parsing.
2014-03-17 18:43:17 -07:00
Max Brunsfeld
da992b77ff
Rename 'parse_config' export -> 'parser'
2014-03-15 14:48:28 -07:00
Max Brunsfeld
0dc3a95d0c
Refactor parser header
...
Make separate lexer, stack and parser structs.
2014-03-15 14:43:50 -07:00
Max Brunsfeld
ff0c8a98b8
Consolidate reading of input chunks in parser
2014-03-11 12:43:13 -07:00
Max Brunsfeld
42e9a264f3
In parser, read chunked input correctly
2014-03-10 13:25:31 -07:00
Max Brunsfeld
3aaa08b948
Fix some egregiously long lines
2014-03-09 23:58:25 -07:00
Max Brunsfeld
39cb420df2
Remove uses of 'short' and 'long'
2014-03-09 23:00:14 -07:00
Max Brunsfeld
632a88c8ef
Remove some C-style casts
2014-03-09 22:55:48 -07:00
Max Brunsfeld
504c361cb8
Make some implicit constructors explicit
2014-03-09 22:53:49 -07:00
Max Brunsfeld
a4120f36d4
Remove all uses of 'using namespace'
2014-03-09 22:45:33 -07:00
Max Brunsfeld
de5deeeb69
Remove spurious semicolons
2014-03-09 22:24:52 -07:00
Max Brunsfeld
661314cf4e
Remove all non const reference parameters
2014-03-09 22:21:58 -07:00
Max Brunsfeld
a411e43484
Rename source files: .cpp -> .cc
2014-03-09 22:13:08 -07:00
Max Brunsfeld
31a58bc7e4
Make include guards pass cpplint
2014-03-09 22:05:24 -07:00
Max Brunsfeld
eb30429700
Make paths explicit in #includes
2014-03-09 21:43:14 -07:00
Max Brunsfeld
39aa0ccc91
Add script to trim whitespace
2014-03-09 19:49:35 -07:00
Max Brunsfeld
af64d3fffa
Build with all warnings enabled
...
Fix resulting warnings
2014-03-04 18:28:28 -08:00
Max Brunsfeld
ae82b90fdb
Don't use exceptions in pattern parser
2014-03-04 12:36:38 -08:00
Max Brunsfeld
e479773aac
Rename files to avoid duplicate basenames
2014-03-02 15:07:43 -08:00
Max Brunsfeld
c43ec90dad
Fix missing auxiliary tokens in lex error state
2014-02-27 00:38:08 -08:00
Max Brunsfeld
926b4ef242
Clean up parser.h
2014-02-27 00:06:22 -08:00
Max Brunsfeld
0d4687bdad
Make start and EOF symbols into builtin symbols
2014-02-26 23:18:49 -08:00
Max Brunsfeld
8deeff392b
Fix memory leak in tree
2014-02-26 19:54:22 -08:00
Max Brunsfeld
7251456cd2
Move some general code generation helpers into their own file
2014-02-26 19:08:07 -08:00
Max Brunsfeld
63718d5bad
Add basic support for error recovery
2014-02-26 19:03:43 -08:00
Max Brunsfeld
df05c75525
Backfill unit tests for follow sets
...
Also, add some comment docs for some compiler functions
2014-02-26 00:39:31 -08:00
Max Brunsfeld
4541332c2b
Put definition of EOF symbol back in parse table builder (not in parser.h)
2014-02-25 13:25:58 -08:00
Max Brunsfeld
e58a6d8ba7
Start work on error recovery
...
- In runtime, make parse errors part of the parse tree
- Add error state to lexers in which they can accept any token
2014-02-24 18:42:54 -08:00
Max Brunsfeld
4520d6e1a2
Remove unnecessary downcast in prepare_grammar::perform
2014-02-23 19:01:24 -08:00
Max Brunsfeld
2c30dce08e
Refactor rule visitors
2014-02-23 18:46:53 -08:00
Max Brunsfeld
713b3899c5
Simplify logic for extracting tokens from grammar
2014-02-23 10:00:49 -08:00
Max Brunsfeld
946088bccc
Remove unused typedef from compiler.h
2014-02-21 08:23:20 -08:00
Max Brunsfeld
cdf63b6083
Add missing includes
2014-02-20 23:11:27 -08:00
Max Brunsfeld
688fe993cf
Remove rules that don't need to be public from compiler.h
2014-02-20 23:05:32 -08:00
Max Brunsfeld
6ed6aa05cc
Update runtime code naming
...
Also, add macros so that code generator doesn't
need to know about any runtime variables names
or types
2014-02-20 13:30:43 -08:00
Max Brunsfeld
e40c6ec60d
Clean up PreparedGrammar::operator==
2014-02-19 18:30:56 -08:00