aboutsummaryrefslogtreecommitdiffstats
path: root/src/compile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compile.cpp')
-rw-r--r--src/compile.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/compile.cpp b/src/compile.cpp
index f5a4128..31fa889 100644
--- a/src/compile.cpp
+++ b/src/compile.cpp
@@ -38,6 +38,12 @@ AString::compile(CEnv& cenv) throw()
}
CVal
+AQuote::compile(CEnv& cenv) throw()
+{
+ return (*(begin() + 1))->compile(cenv);
+}
+
+CVal
ALexeme::compile(CEnv& cenv) throw()
{
return cenv.engine()->compileString(cenv, c_str());
@@ -112,6 +118,16 @@ ACons::compile(CEnv& cenv) throw()
}
CVal
+ATuple::compile(CEnv& cenv) throw()
+{
+ const AType* type = cenv.type(this);
+ vector<CVal> fields;
+ for (const_iterator i = begin(); i != end(); ++i)
+ fields.push_back((*i)->compile(cenv));
+ return cenv.engine()->compileTup(cenv, type, fields);
+}
+
+CVal
ADot::compile(CEnv& cenv) throw()
{
const_iterator i = begin();