void InterpreterService_impl::interpretMain(const char* expr)
{
    ostream& os = MessageView::instance()->cout();
    
    os << (format(_("%1%: interpret(\"%2%\")")) % item->name() % expr) << endl;

    ScriptItem* scriptItem = item->findOwnerItem<ScriptItem>();
    if(!scriptItem){
        os <<(format(_("The owner script item of %1% is not found. The interpret function cannot be executed."))
              % item->name()) << endl;
    } else {
        if(scriptItem->isRunning()){
            os << (format(_("Owner script item \"%1%\" is running now. The interpret function cannot be executed."))
                   % scriptItem->name()) << endl;
        } else {
            if(!scriptItem->executeCode(expr)){
                os << (format(_("Executing the script given to the interpret function failed."))) << endl;
            } else {
                if(!scriptItem->waitToFinish()){
                    os << (format(_("The script does not return.")) % item->name()) << endl;
                } else {
                    result = scriptItem->resultString();
                    if(!result.empty()){
                        os << (format(_("%1%: interpret() returns %2%.")) % item->name() % result) << endl;
                    } else {
                        os << (format(_("%1%: interpret() finished.")) % item->name()) << endl;
                    }
                }
            }
        }
    }
}