解释器的基本运行思路

 

宿舍人今早提到这个问题,因为回答他,就顺便总结了一下,在此记下,为其他不懂的人作为一个感性的认识。

 

煤老板 刚才我想了一下你那个问题,可以这么理解吗?

从大处想,假设解释器是用c语言写的,那么它就是一个普通的c语言程序普通的c语言程序是怎么运行的,解释器就是怎么运行的,而php就是输给这个c语言程序数据。

从小处想,我觉得你迷惑的是它怎么运行的?可以把php语言想成命令,假设c语言读到 php中的“(a+b)”这条语句的时候,我自然会去调用c语言里面的a+b。
解释器里有很多    基本的php语句对应到  基本c函数的映射(可以理解为一堆if else  或switch if()括号里面的东西就是将php输入与现有的模式匹配),它通过语法分析,将复杂的语法分解成原子级别的语法结构,原子级别的语法结构就可以找到c语言里面对应的函数了,然后逆向的将这些解释器里定义的基本函数组合起来(我看的书的方法是通过函数调用与返回的形式)。


这样php的语法就被我转变为c语言中非常基本函数的组合了,那么就可以直接运行这个c语言函数了。


当这个c语言解释器被编译成汇编或2进制运行的时候,抽象上他还是我们写的c语言的解释器。就像我们平时写完c程序,也不能老是考虑c编译成汇编会是什么样子一样,c解释器编译成汇编也没必要老是考虑,在c语言这一层该怎么运行,在汇编层就怎么运行。。

大概可以这么理解,再细节了会涉及很多,得看代码,我说不清楚了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值