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