checkpoint fast parser
pass start, end to rules
make a bit more consistent
more cleanup
refactor expand_vars into a class, add one more test for coverage
wrap OMetaParser in NinjaParser
rework NinjaParser.apply()
unroll grammar
unroll empty_line, ws, comment
unroll decl, add stubs for remaining rules
add docstrings, tests for include, subninja
unroll subninja
unroll include
unroll default
fix eol declarations in subninja, include, default
unroll path, paths, fix bug in comment
add expect() helper, partially implement build
use expect() in more places
unroll var
unroll value