aboutsummaryrefslogtreecommitdiffstats
path: root/tuplr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tuplr.cpp')
-rw-r--r--tuplr.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/tuplr.cpp b/tuplr.cpp
index c945c34..f3d0c66 100644
--- a/tuplr.cpp
+++ b/tuplr.cpp
@@ -139,7 +139,8 @@ macDef(PEnv& penv, const SExp& exp)
SExp fnExp(exp.at(2).loc);
fnExp.push_back(SExp(exp.at(2).loc, "fn"));
fnExp.push_back(argsExp);
- fnExp.push_back(exp.at(2));
+ for (size_t i = 2; i < exp.size(); ++i)
+ fnExp.push_back(exp.at(i));
SExp ret(exp.loc);
ret.push_back(exp.at(0));
ret.push_back(exp.at(1).at(0));
@@ -244,6 +245,8 @@ print_usage(char* name, bool error)
os << " -h Display this help and exit" << endl;
os << " -r Enter REPL after evaluating files" << endl;
os << " -p Pretty-print input only" << endl;
+ os << " -g Debug (disable optimisation)" << endl;
+ os << " -d Dump assembly output" << endl;
os << " -e EXPRESSION Evaluate EXPRESSION" << endl;
os << " -o FILE Write output to FILE" << endl;
return error ? 1 : 0;
@@ -267,9 +270,10 @@ main(int argc, char** argv)
return print_usage(argv[0], false);
} else if (argv[i][0] != '-') {
files.push_back(argv[i]);
- } else if (!strncmp(argv[i], "-r", 3)) {
- args.insert(make_pair(argv[i], ""));
- } else if (!strncmp(argv[i], "-p", 3)) {
+ } else if (!strncmp(argv[i], "-r", 3)
+ || !strncmp(argv[i], "-p", 3)
+ || !strncmp(argv[i], "-g", 3)
+ || !strncmp(argv[i], "-d", 3)) {
args.insert(make_pair(argv[i], ""));
} else if (i == argc-1 || argv[i+1][0] == '-') {
return print_usage(argv[0], true);
@@ -279,6 +283,8 @@ main(int argc, char** argv)
}
}
+ cenv->args = args;
+
int ret = 0;
string output;