diff options
Diffstat (limited to 'src/compile.cpp')
-rw-r--r-- | src/compile.cpp | 16 |
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(); |