// param type : String, Stream // return type : Code, null CodePtr compile(const AnyPtr& source);
// -> xtal::compile(C++) fun builtin::compile(source);
与えられたメモリ上の文字列をコンパイルする、もしくは、メモリ上のバイトコードをCodeに変換し、CodePtrを返します。
コンパイル失敗時にはXtal例外を送出します。
先頭4byteが”xtal”かどうかで文字列かバイトコードかを判断するため、注意が必要です。
文字列をコンパイルし実行する
#include <xtal.h> void exec_xtal() { const xtal::CodePtr code(xtal::compile("\"hello\".p;")); XTAL_CATCH_EXCEPT(e){ e->p(); } else { code->call(); } const xtal::CodePtr code2(xtal::compile("hoge-")); XTAL_CATCH_EXCEPT(e){ e->p(); } else { code->call(); } }
try{ code : compile("\"hello\".p;"); code(); } catch (e){ e.p; } try{ code : compile("hoge-"); code(); } catch (e){ e.p; }