int main(int argc, char *argv[]) { auto compileOnly = false; auto logLevel = 4; for(auto i = 0; i < argc; ++i) { if(std::string(argv[i]).compare("-c") == 0 || std::string(argv[i]).compare("--compile") == 0) { compileOnly = true; } if(std::string(argv[i]).find("--log") == 0) { if(argv[i][5] < '0' || argv[i][5] > '4') { std::cerr << "Bad level" << std::endl; exit(2); } logLevel = argv[i][5] - '0'; } } yyparse(); InitializeNativeTarget(); InitializeNativeTargetAsmPrinter(); InitializeNativeTargetAsmParser(); CodeGenContext context; context.dclog.max_level = debug_stream::level(logLevel); createCoreFunctions(context); context.generateCode(*programBlock); if (!compileOnly) { auto val = context.runCode(); (context.llclog << val.IntVal.getSExtValue() << "\n").flush(); } return 0; }
int main(int argc, char **argv) { yyparse(); std::cout << programBlock << std::endl; CodeGenContext context; context.generateCode(*programBlock); context.runCode(); return 0; }
int main(int argc, char **argv) { yyparse(); std::cout << programBlock << endl; // see http://comments.gmane.org/gmane.comp.compilers.llvm.devel/33877 InitializeNativeTarget(); CodeGenContext context; createCoreFunctions(context); context.generateCode(*programBlock); context.runCode(); return 0; }
int main(int argc, char **argv) { if (argc > 1) { extern FILE* yyin; if(!(yyin = fopen(argv[1], "r"))) { perror(argv[1]); return (1); } } yyparse(); std::cout << programBlock << std::endl; CodeGenContext context; context.generateCode(*programBlock); context.runCode(); return 0; }
void CInstance::prePass(CodeGenContext& context) { // On the prepass, we need to generate the code for this module std::string includeName = filename.quoted.substr(1, filename.quoted.length() - 2); if (resetFileInput(includeName.c_str()) != 0) { context.gContext.ReportError(nullptr, EC_ErrorAtLocation, filename.quotedLoc, "Unable to instance module %s", includeName.c_str()); return; } yyparse(); if (g_ProgramBlock == 0) { context.gContext.ReportError(nullptr, EC_ErrorAtLocation, filename.quotedLoc, "Unable to parse module %s", includeName.c_str()); return; } CodeGenContext* includefile; includefile = new CodeGenContext(context.gContext, &context); includefile->moduleName = ident.name + "."; if (context.gContext.opts.generateDebug) { context.gContext.scopingStack.push(context.gContext.CreateNewDbgFile(includeName.c_str())); } includefile->generateCode(*g_ProgramBlock); if (context.gContext.opts.generateDebug) { context.gContext.scopingStack.pop(); } if (includefile->isErrorFlagged()) { context.gContext.ReportError(nullptr , EC_ErrorAtLocation, filename.quotedLoc, "Unable to parse module %s", includeName.c_str()); return; } context.m_includes[ident.name + "."] = includefile; }
int main(int argc, char **argv) { FILE *inpFile = fopen(argv[1], "r"); if (!inpFile) { cout << "Error opening File" << endl; return -1; } yyin = inpFile; yyparse(); std::cout << programBlock << endl; // see http://comments.gmane.org/gmane.comp.compilers.llvm.devel/33877 llvm::InitializeNativeTarget(); CodeGenContext context; context.generateCode(*programBlock); context.runCode(); system("pause"); return 0; }
int main(void) { /* object to interface with llvm API (defined in codegen.cpp) */ CodeGenContext context; /* * Lexing and Parsing * ------------------ * lexer feeds tokens to parser * parser builds an AST stored in programBlock */ yyparse(); /* prints out root address of AST root */ std::cout << "=================================" << std::endl << "Address of root AST node: " << programBlock << std::endl << std::endl; /* * Code Generation * --------------- */ /* establish host target & link target libraries JIT uses */ llvm::InitializeNativeTarget(); coreFuncs(context); context.generateCode(*programBlock); context.runCode(); return EXIT_SUCCESS; }