可以看看我的这个
https://www.v2ex.com/t/826154被网友称为"玩具"
这个"玩具"(BPC)兼容 PHP,也就是说,同样的 PHP 代码,用 php 执行出来的结果和 BPC 编译执行出来的结果是一样的.如果当作黑盒子用的话,我不说是 BPC,一般情况下外部来看就是 PHP.
虽然我是走编译成二进制的路子,但是也可以做成解释执行的,只不过解释执行对我没用,就没做.
具体实现思路的话,首先要实现一个要兼容的语言的核心或者说 runtime,这个核心保证了你的解释器和那个语言的行为是一致的,比如拿 PHP 来说,两个 int 相加,如果溢出了,就返回 float 而不是溢出,那么你的 runtime 里就要对加法这样来实现.
然后再定义 /实现一个添加扩展函数或类的机制,来在 runtime 之外增加你需要的 user 及 user.transfer()
再接下来就是 lexer parser 那一套了,解析脚本在做什么,调用 runtime 和扩展函数执行给出结果.