public int run() {
		Utils.setConsoleTitle(log.localize("interactive.cmd.title"));
		log.println("interactive.header", se.getFactory().getEngineName(), se.getFactory().getEngineVersion());
		se.put(XScriptLang.ENGINE_ATTR_INTERACTIVE, true);
		se.put(XScriptLang.ENGINE_ATTR_SOURCE_FILE, ".interactive");
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		while(se.isRunning()){
			log.print("interactive.cmd.prfix");
			log.flush();
			String script = sc.nextLine();
			script = script.trim();
			if(script.equals("exit")){
				return Utils.OK;
			}else if(script.equals("help")){
				log.println("msg.help");
				continue;
			}
			while(!finished(script)){
				log.print("interactive.cmd.resume");
				log.flush();
				script += "\n"+sc.nextLine();
			}
			try {
				Object ret = se.eval(script);
				ret = ((Invocable)se).invokeFunction("__builtin__.___str__", ret);
				log.rawprintln(XUtils.getString(se, (XValue)ret));
			} catch (ScriptException e) {
				log.rawprintln(Kind.ERROR, e.getMessage());
			} catch (NoSuchMethodException e) {}
		}
		log.flush();
		return (Integer)se.get(XScriptLang.ENGINE_ATTR_EXIT_STATE);
	}