================
 ml-ulex
================

 - new spec format
     x implement & and ^
     - unicode char classes (and meeting the standard, generally)
     - lookahead / and $

 - better lex/parse error messages
     - allow $ and /, but give error that not supported in --ml-lex-mode
     - use new region infrastructure and carry line numbers further

 - check that all used start states are defined
 - check for stuck states

 x switch ulex backend to functional stream

================
 ml-antlr
================

 - fix error repair
     x implement heuristic for primary repair
     x implement secondary recovery
     x work on error messages
     x position details -- WSTREAM
     - limit metric measurement to ~25 tokens, rather than to EOF
     - deal with keywords
     - preferred replacements
 x make prePath required in GLA.*
 x think about: EBNF predicates should only include true case?
 x grammar inheritance
 x custom names for return values
 x move actions into separate functions
 x reverse order of %where and => actions
 x region information

 - add signature to generated parser
     - add type for %arg
 - test performance

 - controlling lexer state / lexer multiplexing

 - friendlier errors for prediction tree failure
     - report multiple failures
 - more/better comments!
 - improve check-grammar
     x allow for and report multiple errors
     - do additional checking
        - multiple tokens w/ same abbrev

 - figure out syntax for A (X A)* and A ((X | Y | Z) A)*
 - automatic left-factoring?
 - improve DOT output
 - predicate hoisting (or maybe not...)

 - use ml-antlr for parsing
 - use new region infrastructure and carry line numbers further
     - overhaul CheckGrammar for better error messages

 - (*#line directive
     - ran into problems with ordering in generated file not matching 
       ordering in source





================================================

add built-in Unicode character classes
look into OCaml-style rules (starting with | rather than :)
nonterminal type annotations
decrease lexer size and compile time
check that nonterminals with parameters are given parameters
union/insct/containment for stream pos spans

speculative:
higher-order nonterminal definitions

================================================================

yylinepos := 1 for the first line of the file (and document this)

dump.dot and latex output.  add switches to ml-antlr and document them

support for {1,3} (ranges) in ml-ulex

support for %arg

new interfaces for ulex (stream textio, imperative textio, string, etc)
better handling of EOF/EOP
check for same token specified multiple times with %keyword
nonunicode charsets