add parser_test.py to test unknown rule
test that tabs are treated as spaces
add skeleton of remaining files
add end-to-end dummy test
refactor main
get decent arg parsing coverage