public
Description: A system for creating fast, reusable parsers
Homepage: http://www.reverberate.org/gazelle/
Clone URL: git://github.com/haberman/gazelle.git
gazelle / TODO
dc02e9b3 » haberman 2008-06-27 Add ReleaseNotes and TODO. 1
2 This is a list of things I definitely want to do. I don't go into too many
3 specifics, because the specifics change often as I think about the problem
4 harder.
5
6 Core Parsing Algorithm (all changes should have test-cases):
7 * properly support EOF in lookahead (like s -> "A" | "A" "B"; should predict 1).
8 * properly support lookahead that predicts a return from a final RTN state
9 like s -> a "X"; a -> "Y"*;
10 * try to detect when we are in an infinite loop (requires much thought).
11 * detect cases where some RTN alternatives have no GLA final state.
12 * deal with lexer-level ambiguity. longest match will do for now, but
13 we're not currently detecting s -> "A" | "AB";
14
15 Runtime:
16 * Richer callback specifiers.
17 * Bring back slotbufs: a cheap (stack only, no heap) way of saving parse_vals for
18 the currently-open nodes of the parse tree.
19 * Provide a buffering layer.
20 * As the runtime starts to mature: language bindings.
21
71830569 » haberman 2008-06-29 Updated README for 0.2 and ... 22 Tests! Everything should have tests, as much as possible:
23 * all aspects of compilation
24 * bitcode format (both reading and writing)
25 * JSON output from gzlparse. Both well-formedness and accuracy.
26
dc02e9b3 » haberman 2008-06-27 Add ReleaseNotes and TODO. 27 Major design areas that exist only in my head:
28 * Embedding Lua to do things only an imperative language can do.
29 * Operator-precedence parsing using the shunting yard algorithm.
30 * Parallel parsers (for both embedded languages and things like whitespace/comments)
31 * Error recovery (basically: just yield to an imperative function).
32 * Generate imperative bytecode / JIT compile.
33 * AST-building.
34