Example #1
0
int main(int argc, char** argv) {
    string impl = "printer";
    const char* script = NULL;
    for (int32_t i = 1; i < argc; i++) {
      if (string(argv[i]) == "-j") {
        impl = "jit";
      } else {
        script = argv[i];
      }
    }
    Translator* translator = Translator::create(impl);

    if (translator == 0) {
        cout << "TODO: Implement translator factory in translator.cpp!!!!" << endl;
        return 1;
    }

    const char* expr = "double x; double y;"
                        "x += 8.0; y = 2.0;"
                        "print('Hello, x=',x,' y=',y,'\n');"
        ;
    bool isDefaultExpr = true;

    if (script != NULL) {
        expr = loadFile(script);
        if (expr == 0) {
            printf("Cannot read file: %s\n", script);
            return 1;
        }
        isDefaultExpr = false;
    }

    Code* code = 0;

    Status* translateStatus = translator->translate(expr, &code);
    if (translateStatus->isError()) {
        uint32_t position = translateStatus->getPosition();
        uint32_t line = 0, offset = 0;
        positionToLineOffset(expr, position, line, offset);
        printf("Cannot translate expression: expression at %d,%d; "
               "error '%s'\n",
               line, offset,
               translateStatus->getError().c_str());
    }

    if (code != NULL) {
        delete code;
    }

    delete translateStatus;
    delete translator;

    if (!isDefaultExpr) {
      delete [] expr;
    }

    return 0;
}
Example #2
0
FrameInfo get_frame_info(const FrameId& frame) {
  if (frames.get()) {
    return frames->info_for(frame);
  } else if (translate) {
    return translator.translate(frame);
  } else {
    return FrameInfo(frame.module, frame.offset);
  }
}
Example #3
0
int main(int argc, char** argv) {
    const char* script = 0;
    std::string mode = INTERPRETE;
    for (int32_t i = 1; i < argc; i++) {
        if (string(argv[i]) == "-d") {
            mode = DISASM;
        } else if (string(argv[i]) == "-j") {
            mode = JIT;
        } else {
            script = argv[i];
        }
    }

    if (script == 0) {
        cout << "Usage: interpreter [-d | -j] <source_file>" << endl;
        return WRONG_ARG_COUNT;
    }

    const char* expr = loadFile(script);
    if (expr == 0) {
        cout << "Cannot read file: " << script << endl;
        return CANNOT_READ_SOURCE;
    }

    Translator* translator = new BytecodeTranslatorImpl();

    Code* code = 0;

    Status* translateStatus = translator->translate(expr, &code);
    if (translateStatus == 0) {
        //todo
    } else if (translateStatus->isError()) {
        uint32_t position = translateStatus->getPosition();
        uint32_t line = 0, offset = 0;
        positionToLineOffset(expr, position, line, offset);
        cout << "Cannot translate expression: expression at " << line << ", " << offset << "; "
             << "error '" << translateStatus->getError().c_str() << "'" << endl;
    } else {
        assert(code != 0);

        if (mode == DISASM) {
            code->disassemble(cout);
        } else if (mode == JIT) {
        } else {
            vector<Var*> t;
            code->execute(t);
        }

        delete code;
    }

    delete translateStatus;
    delete translator;

    return 0;
}
Example #4
0
void TwitterWidgetItemMessage::contextMenuEvent(QContextMenuEvent *event) {
	QMenu *menu = createStandardContextMenu(event->pos());
	menu->addMenu(languagesMenu);
	Translator *translator = Translator::getInstance();
	QAction *action = menu->exec(event->globalPos());
	if (actionLanguage.find(action) != actionLanguage.end()) {
		if (actionLanguage[action] == "-") {
			setHtml(QwitTools::prepareMessage(message.text, message.account));
		} else {
			translator->translate(message.text, actionLanguage[action], this);
		}
	}
	delete menu;
}
Example #5
0
int main(int argc, char* argv[]){

	std::cout << "loading File...\n";

	Translator translator;

	translator.loadmRNAFromFile("FILE");
	translator.translate();
	translator.printmRNA();

	std::cout << "Partitioning.." << std::endl;
	translator.printCodonStrand();
    std::cout << "translating.." << std::endl;
    translator.printAminoStrand();

	return 0;
}
Example #6
0
int main(int argc, char **argv) {
    string impl = "printer";
    const char *script = NULL;
    for (int32_t i = 1; i < argc; i++) {
        if (string(argv[i]) == "-j") {
            impl = "jit";
        } else {
            script = argv[i];
        }
    }
    Translator *translator = Translator::create(impl);
    if (translator == 0) {
        return 1;
    }
    const char *expr = "double x; double y;"
                       "x += 8.0; y = 2.0;"
                       "print('Hello, x=',x,' y=',y,'\n');"
                       ;
    bool isDefaultExpr = true;
    if (script != NULL) {
        expr = loadFile(script);
        if (expr == 0) {
            printf("Cannot read file: %s\n", script);
            return 1;
        }
        isDefaultExpr = false;
    }
    Code *code = 0;
    Status *translateStatus = translator->translate(expr, &code);
    if (translateStatus->isError()) {
        uint32_t position = translateStatus->getPosition();
        uint32_t line = 0, offset = 0;
        positionToLineOffset(expr, position, line, offset);
        printf("Cannot translate expression: expression at %d,%d; "
               "error '%s'\n",
               line, offset,
               translateStatus->getError().c_str());
    } else {
        if (true) { return 0; }
        assert(code != 0);
        vector<Var *> vars;
        if (isDefaultExpr) {
            Var *xVar = new Var(VT_DOUBLE, "x");
            Var *yVar = new Var(VT_DOUBLE, "y");
            vars.push_back(xVar);
            vars.push_back(yVar);
            xVar->setDoubleValue(42.0);
        }
        Status *execStatus = code->execute(vars);
        if (execStatus->isError()) {
            printf("Cannot execute expression: error: %s\n",
                   execStatus->getError().c_str());
        } else {
            if (isDefaultExpr) {
                printf("x evaluated to %f\n", vars[0]->getDoubleValue());
                for (uint32_t i = 0; i < vars.size(); i++) {
                    delete vars[i];
                }
            }
        }
        delete code;
        delete execStatus;
    }
    delete translateStatus;
    delete translator;
    if (!isDefaultExpr) {
        delete [] expr;
    }
    return 0;
}
Example #7
0
int main(int argc, char** argv) {
    string impl = "intepreter";
    const char* script = NULL;
    for (int32_t i = 1; i < argc; i++) {
        if (string(argv[i]) == "-j") {
            impl = "jit";
        }  if (string(argv[i]) == "-p") {
            impl = "intepreter";
        } else {
            script = argv[i];
        }
    }
    Translator* translator = Translator::create(impl);

    if (translator == 0) {
        cout << "TODO: Implement translator factory in translator.cpp!!!!" << endl;
        return 1;
    }

        const char* expr ="int a; a = 8; double b; b = 8.0; print(5 > 3);"
                          "function void add(double x, int t) {"
                          "print(x);"
                          "function void addw3(int y)"
                          "{"
                          "print(y);"
                          "};"
                          "} "
                          "function void NEW(int y)"
                          "{"
                          "print(y);"
                          "}; add(b, a); b = 7.3;" ;

    //    const char* expr = "int a; a = 6; int b; b = 3;"
    //                       "function void mprint(int t) { print(b);     function void add(int t) { print (b);} }"
    //                       "mprint(b);";

    //    const char* expr = "int t; t = 4;"
    //                       "function int strlen(int t) native 'strlen'; function int strlen2(int t) native 'strlen2'; strlen2(t); strlen(t);";

    // const char* expr = "int a; a = 8; while (5 > 7) { int a; a = 7; print (a); }";

    //    const char* expr = "int i; i = 0; for (i in -3..4)  {"
    //                       "print(i);"
    //                       "}";

    //    const char* expr = "int a; a = 31; if (a > 0)"
    //                            "{ int a; a = 3; print(a);} "
    //                            "else {int a; a = 4; print(a);}";


    //    const char* expr =
    //                        "print(12345678, '\n');"
    //                        "print(-1234567890123456, '\n');"

    //                        "print(1.0, '\n');"
    //                        "print(-2.0, '\n');"
    //                        "print(1e8, '\n');"
    //            "print(1e-8, '');";

    // const char * expr = "print('asd' + 'asdsa');";
//    const char* expr =
//    "function int fact(int n) {\
//            if (n < 3) {\
//                return n;\
//            }\
//            return n*fact(n-1) + fact(n-2);\
//        }\
//    fact(1);";

     //const char* expr = "int l; function int add(int a){ return 8;} l = 3; l*add(l); ";
    cout << "expr = " << expr <<endl;

    bool isDefaultExpr = true;

    if (script != NULL) {
        expr = loadFile(script);
        if (expr == 0) {
            printf("Cannot read file: %s\n", script);
            return 1;
        }
        isDefaultExpr = false;
    }

    Code* code = 0;

    Status* translateStatus = translator->translate(expr, &code);
    if (translateStatus->isError()) {
        uint32_t position = translateStatus->getPosition();
        uint32_t line = 0, offset = 0;
        positionToLineOffset(expr, position, line, offset);
        printf("Cannot translate expression: expression at %d,%d; "
               "error '%s'\n",
               line, offset,
               translateStatus->getErrorCstr());
    } else {
        if (impl != "intepreter") {
            assert(code != 0);
            vector<Var*> vars;

            if (isDefaultExpr) {
                Var* xVar = new Var(VT_DOUBLE, "x");
                Var* yVar = new Var(VT_DOUBLE, "y");
                vars.push_back(xVar);
                vars.push_back(yVar);
                xVar->setDoubleValue(42.0);
            }
            Status* execStatus = code->execute(vars);
            if (execStatus->isError()) {
                printf("Cannot execute expression: error: %s\n",
                       execStatus->getErrorCstr());
            } else {
                if (isDefaultExpr) {
                    printf("x evaluated to %f\n", vars[0]->getDoubleValue());
                    for (uint32_t i = 0; i < vars.size(); i++) {
                        delete vars[i];
                    }
                }
            }
            delete code;
            delete execStatus;
        }
    }
    delete translateStatus;
    delete translator;

    if (!isDefaultExpr) {
        delete [] expr;
    }

    return 0;
}
Example #8
0
int main(int argc, char** argv) {
    string impl = "interpreter";
    const char* script = NULL;
    for (int32_t i = 1; i < argc; i++) {
      if (string(argv[i]) == "-j") {
        impl = "jit";
      } else {
        script = argv[i];
      }
    }
    Translator* translator = Translator::create(impl);
    if (translator == 0) {
        cout << "TODO: Implement translator factory in translator.cpp!!!!" << endl;
        return 1;
    }

    const char* expr =
            "function void a(int i) {"
            "   print(i, '\n');"
            "}"
            "a(3);";
    bool isDefaultExpr = true;

//    script = "/home/mrx/Svn/MathVm/mathvm/students/2014/habibulin/2_1/testing/if.mvm";
    if (script != NULL) {
        expr = loadFile(script);
        if (expr == 0) {
            printf("Cannot read file: %s\n", script);
            return 1;
        }
        isDefaultExpr = false;
    }

    Code* code = 0;

    Status* translateStatus = translator->translate(expr, &code);
    if (translateStatus->isError()) {
        uint32_t position = translateStatus->getPosition();
        uint32_t line = 0, offset = 0;
        positionToLineOffset(expr, position, line, offset);
        printf("Cannot translate expression at %d,%d, "
               "error: \n%s\n",
               line, offset,
               translateStatus->getError().c_str());
    } else {
        BytecodeInterpreter interpreter;
        interpreter.interpret(code);
        if(interpreter.status().isError()) {
            string cause = interpreter.status().errCause();
            size_t pos = interpreter.status().errPos();

            uint32_t line = 0, offset = 0;
            positionToLineOffset(expr, pos, line, offset);
            printf("Cannot translate expression at %d,%d, "
                   "error: \n%s\n",
                   line, offset,
                   cause.c_str());
        }
        DEBUG_MSG("interpretation finished");
    }
    delete translateStatus;
    delete translator;
    if(code) {
        delete code;
    }

    if (!isDefaultExpr) {
      delete [] expr;
    }

    return 0;
}