====== 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;
}