diff options
-rw-r--r-- | ll.cpp | 33 |
1 files changed, 11 insertions, 22 deletions
@@ -311,9 +311,9 @@ parseExpression(PEnv& penv, const SExp& exp) static vector<AST*> pmap(PEnv& penv, const list<SExp>& l) { - list<SExp>::const_iterator i = l.begin(); vector<AST*> code(l.size()); - for (size_t n = 0; i != l.end(); ++i) + size_t n = 0; + for (list<SExp>::const_iterator i = l.begin(); i != l.end(); ++i) code[n++] = parseExpression(penv, *i); return code; } @@ -681,15 +681,18 @@ ASTPrimitive::compile(CEnv& cenv) } + /*************************************************************************** - * REPL - Interactively compile, optimise, and execute code * + * REPL * ***************************************************************************/ -/// Read-Eval-Print-Loop -static void -repl(CEnv& cenv, ExecutionEngine* engine) +int +main() { - // Set up our language + Module* module = new Module("interactive"); + ExecutionEngine* engine = ExecutionEngine::create(module); + CEnv cenv(module, engine->getTargetData()); + PEnv penv; penv.reg(penv.sym("if"), PEnv::Parser(parseIf, 0)); penv.reg(penv.sym("def"), PEnv::Parser(parseDef, 0)); @@ -730,23 +733,9 @@ repl(CEnv& cenv, ExecutionEngine* engine) std::cerr << "Type error: " << e.what() << endl; } } -} - - -/*************************************************************************** - * Main driver code. - ***************************************************************************/ - -int -main() -{ - Module* module = new Module("interactive"); - ExecutionEngine* engine = ExecutionEngine::create(module); - CEnv cenv(module, engine->getTargetData()); - - repl(cenv, engine); std::cout << "Generated code:" << endl; module->dump(); return 0; } + |