uses a (somewhat limited) grid view; parser uses pyparsing