more work on lex/parse/codegen/interp