aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ll.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/ll.cpp b/ll.cpp
index 0e87a2c..823f64a 100644
--- a/ll.cpp
+++ b/ll.cpp
@@ -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;
}
+