SubprogramDeclarationPtr Parser::parseSubprogramDeclaration() { SubprogramDeclarationPtr sub(new SubprogramDeclaration); parseSubprogramHead(sub); if (m_errorCode > ErrorCodes::NoError) { panic(subprogramDeclarationFollow, subprogramDeclarationFollowSize); return SubprogramDeclarationPtr(); } DeclarationsPtr declarations = parseDeclarations(); if (m_errorCode > ErrorCodes::NoError) { panic(subprogramDeclarationFollow, subprogramDeclarationFollowSize); return SubprogramDeclarationPtr(); } sub->declarations = declarations; CompoundStatementPtr body = parseCompoundStatement(); if (m_errorCode > ErrorCodes::NoError) { panic(subprogramDeclarationFollow, subprogramDeclarationFollowSize); return SubprogramDeclarationPtr(); } sub->body = body; return sub; }
void Parser::parseSubprogramDeclaration(){ parseSubprogramHead(); parseDeclarations(); parseCompoundStatement(); m_code->generate(cd_RETURN, NULL, NULL, NULL); }