bool Parser::parse(const wchar_t* code, const ProgramPtr& program) { tokenizer->set(code); try { Token token; while(peek(token)) { StatementPtr statement = parseStatement(); if(!statement) break; program->addStatement(statement); match(L";"); } } catch(...) { return false; } return true; }